Compare commits
No commits in common. "main" and "1.0" have entirely different histories.
60
.github/workflows/docs.yaml
vendored
|
|
@ -1,34 +1,58 @@
|
||||||
# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
||||||
name: Docs
|
name: Docs
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build
|
name: Build
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
runs-on: nixos-latest
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Nix Config
|
- name: Install Nix
|
||||||
run: |
|
uses: DeterminateSystems/nix-installer-action@main
|
||||||
mkdir -p $HOME/.config
|
with:
|
||||||
mkdir -p $HOME/.config/nix
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
echo experimental-features = nix-command flakes pipe-operators >> $HOME/.config/nix/nix.conf
|
extra-conf: |
|
||||||
echo access-tokens = github.com=${{ secrets.GITHUBTOKEN }} >> $HOME/.config/nix/nix.conf
|
extra-experimental-features = nix-command flakes
|
||||||
nix profile install nixpkgs#nodejs
|
|
||||||
|
- name: Set up cache
|
||||||
|
uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
|
|
||||||
- name: Build docs
|
- name: Build docs
|
||||||
run: nix -L build git+https://git.dashie.org/${{ forgejo.repository }}.git?rev=${{ forgejo.sha }}#docs --no-write-lock-file
|
run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs
|
||||||
|
|
||||||
- name: Prepare docs for upload
|
- name: Prepare docs for upload
|
||||||
run: cp -r --dereference --no-preserve=mode,ownership result/ public/
|
run: cp -r --dereference --no-preserve=mode,ownership result/ public/
|
||||||
# - name: Upload artifact
|
|
||||||
# uses: https://data.forgejo.org/forgejo/upload-artifact@v4
|
- name: Upload artifact
|
||||||
# with:
|
uses: actions/upload-pages-artifact@v3
|
||||||
# path: public/
|
|
||||||
- name: Publish Page
|
|
||||||
uses: https://data.forgejo.org/actions/git-pages@v2
|
|
||||||
with:
|
with:
|
||||||
site: https://username.pages.dashie.org/reponame/
|
path: public/
|
||||||
token: ${{ forge.token }}
|
|
||||||
source: public/
|
deploy:
|
||||||
|
name: Deploy
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Deploy docs to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
||||||
|
|
|
||||||
35
.github/workflows/pr.yaml
vendored
|
|
@ -1,35 +0,0 @@
|
||||||
# inspired by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
|
||||||
name: PR check
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: ["main"]
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: check
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Install Nix
|
|
||||||
uses: DeterminateSystems/nix-installer-action@main
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
extra-conf: |
|
|
||||||
extra-experimental-features = nix-command flakes pipe-operators
|
|
||||||
- name: Set up cache
|
|
||||||
uses: DeterminateSystems/magic-nix-cache-action@main
|
|
||||||
- name: action
|
|
||||||
uses: cachix/install-nix-action@v25
|
|
||||||
with:
|
|
||||||
nix_path: nixpkgs=channel:nixos-unstable
|
|
||||||
- name: cache
|
|
||||||
uses: cachix/cachix-action@v16
|
|
||||||
with:
|
|
||||||
name: dashnix
|
|
||||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
|
||||||
- name: Linter check
|
|
||||||
run: nix run --no-write-lock-file github:${{ github.repository }}/${{ github.sha }}#lint -- check
|
|
||||||
- name: Format check
|
|
||||||
run: nix run --no-write-lock-file github:${{ github.repository }}/${{ github.sha }}#format -- --check .
|
|
||||||
- name: Build docs
|
|
||||||
run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs --no-write-lock-file
|
|
||||||
13
.github/workflows/release.yaml
vendored
|
|
@ -6,7 +6,8 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Release
|
name: Release
|
||||||
permissions: write-all
|
permissions:
|
||||||
|
contents: read
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
|
|
@ -14,16 +15,16 @@ jobs:
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
extra-conf: |
|
extra-conf: |
|
||||||
extra-experimental-features = nix-command flakes pipe-operators
|
extra-experimental-features = nix-command flakes
|
||||||
- name: Set up cache
|
- name: Set up cache
|
||||||
uses: DeterminateSystems/magic-nix-cache-action@main
|
uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
- name: Build ISO
|
- name: Build ISO
|
||||||
run: nix build github:${{ github.repository }}/${{ github.sha }}#iso --no-write-lock-file
|
run: nix build github:${{ github.repository }}/${{ github.sha }}#iso
|
||||||
- name: Prepare ISO for upload
|
- name: Prepare ISO for upload
|
||||||
run: |
|
run: |
|
||||||
cp -r --dereference --no-preserve=mode,ownership result/iso/DashNix.iso DashNix.iso
|
cp -r --dereference --no-preserve=mode,ownership result/ public/
|
||||||
- name: upload ISO
|
- name: upload ISO
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
files: |
|
path: path/
|
||||||
DashNix.iso
|
|
||||||
|
|
|
||||||
3
.gitignore
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
result/*
|
|
||||||
result
|
|
||||||
flake.lock
|
|
||||||
167
LICENSE
|
|
@ -1,169 +1,3 @@
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
|
|
||||||
This version of the GNU Lesser General Public License incorporates
|
|
||||||
the terms and conditions of version 3 of the GNU General Public
|
|
||||||
License, supplemented by the additional permissions listed below.
|
|
||||||
|
|
||||||
0. Additional Definitions.
|
|
||||||
|
|
||||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
|
||||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
|
||||||
General Public License.
|
|
||||||
|
|
||||||
"The Library" refers to a covered work governed by this License,
|
|
||||||
other than an Application or a Combined Work as defined below.
|
|
||||||
|
|
||||||
An "Application" is any work that makes use of an interface provided
|
|
||||||
by the Library, but which is not otherwise based on the Library.
|
|
||||||
Defining a subclass of a class defined by the Library is deemed a mode
|
|
||||||
of using an interface provided by the Library.
|
|
||||||
|
|
||||||
A "Combined Work" is a work produced by combining or linking an
|
|
||||||
Application with the Library. The particular version of the Library
|
|
||||||
with which the Combined Work was made is also called the "Linked
|
|
||||||
Version".
|
|
||||||
|
|
||||||
The "Minimal Corresponding Source" for a Combined Work means the
|
|
||||||
Corresponding Source for the Combined Work, excluding any source code
|
|
||||||
for portions of the Combined Work that, considered in isolation, are
|
|
||||||
based on the Application, and not on the Linked Version.
|
|
||||||
|
|
||||||
The "Corresponding Application Code" for a Combined Work means the
|
|
||||||
object code and/or source code for the Application, including any data
|
|
||||||
and utility programs needed for reproducing the Combined Work from the
|
|
||||||
Application, but excluding the System Libraries of the Combined Work.
|
|
||||||
|
|
||||||
1. Exception to Section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
You may convey a covered work under sections 3 and 4 of this License
|
|
||||||
without being bound by section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
2. Conveying Modified Versions.
|
|
||||||
|
|
||||||
If you modify a copy of the Library, and, in your modifications, a
|
|
||||||
facility refers to a function or data to be supplied by an Application
|
|
||||||
that uses the facility (other than as an argument passed when the
|
|
||||||
facility is invoked), then you may convey a copy of the modified
|
|
||||||
version:
|
|
||||||
|
|
||||||
a) under this License, provided that you make a good faith effort to
|
|
||||||
ensure that, in the event an Application does not supply the
|
|
||||||
function or data, the facility still operates, and performs
|
|
||||||
whatever part of its purpose remains meaningful, or
|
|
||||||
|
|
||||||
b) under the GNU GPL, with none of the additional permissions of
|
|
||||||
this License applicable to that copy.
|
|
||||||
|
|
||||||
3. Object Code Incorporating Material from Library Header Files.
|
|
||||||
|
|
||||||
The object code form of an Application may incorporate material from
|
|
||||||
a header file that is part of the Library. You may convey such object
|
|
||||||
code under terms of your choice, provided that, if the incorporated
|
|
||||||
material is not limited to numerical parameters, data structure
|
|
||||||
layouts and accessors, or small macros, inline functions and templates
|
|
||||||
(ten or fewer lines in length), you do both of the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the object code that the
|
|
||||||
Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
4. Combined Works.
|
|
||||||
|
|
||||||
You may convey a Combined Work under terms of your choice that,
|
|
||||||
taken together, effectively do not restrict modification of the
|
|
||||||
portions of the Library contained in the Combined Work and reverse
|
|
||||||
engineering for debugging such modifications, if you also do each of
|
|
||||||
the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the Combined Work that
|
|
||||||
the Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
c) For a Combined Work that displays copyright notices during
|
|
||||||
execution, include the copyright notice for the Library among
|
|
||||||
these notices, as well as a reference directing the user to the
|
|
||||||
copies of the GNU GPL and this license document.
|
|
||||||
|
|
||||||
d) Do one of the following:
|
|
||||||
|
|
||||||
0) Convey the Minimal Corresponding Source under the terms of this
|
|
||||||
License, and the Corresponding Application Code in a form
|
|
||||||
suitable for, and under terms that permit, the user to
|
|
||||||
recombine or relink the Application with a modified version of
|
|
||||||
the Linked Version to produce a modified Combined Work, in the
|
|
||||||
manner specified by section 6 of the GNU GPL for conveying
|
|
||||||
Corresponding Source.
|
|
||||||
|
|
||||||
1) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (a) uses at run time
|
|
||||||
a copy of the Library already present on the user's computer
|
|
||||||
system, and (b) will operate properly with a modified version
|
|
||||||
of the Library that is interface-compatible with the Linked
|
|
||||||
Version.
|
|
||||||
|
|
||||||
e) Provide Installation Information, but only if you would otherwise
|
|
||||||
be required to provide such information under section 6 of the
|
|
||||||
GNU GPL, and only to the extent that such information is
|
|
||||||
necessary to install and execute a modified version of the
|
|
||||||
Combined Work produced by recombining or relinking the
|
|
||||||
Application with a modified version of the Linked Version. (If
|
|
||||||
you use option 4d0, the Installation Information must accompany
|
|
||||||
the Minimal Corresponding Source and Corresponding Application
|
|
||||||
Code. If you use option 4d1, you must provide the Installation
|
|
||||||
Information in the manner specified by section 6 of the GNU GPL
|
|
||||||
for conveying Corresponding Source.)
|
|
||||||
|
|
||||||
5. Combined Libraries.
|
|
||||||
|
|
||||||
You may place library facilities that are a work based on the
|
|
||||||
Library side by side in a single library together with other library
|
|
||||||
facilities that are not Applications and are not covered by this
|
|
||||||
License, and convey such a combined library under terms of your
|
|
||||||
choice, if you do both of the following:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work based
|
|
||||||
on the Library, uncombined with any other library facilities,
|
|
||||||
conveyed under the terms of this License.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library that part of it
|
|
||||||
is a work based on the Library, and explaining where to find the
|
|
||||||
accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
6. Revised Versions of the GNU Lesser General Public License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the GNU Lesser General Public License from time to time. Such new
|
|
||||||
versions will be similar in spirit to the present version, but may
|
|
||||||
differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Library as you received it specifies that a certain numbered version
|
|
||||||
of the GNU Lesser General Public License "or any later version"
|
|
||||||
applies to it, you have the option of following the terms and
|
|
||||||
conditions either of that published version or of any later version
|
|
||||||
published by the Free Software Foundation. If the Library as you
|
|
||||||
received it does not specify a version number of the GNU Lesser
|
|
||||||
General Public License, you may choose any version of the GNU Lesser
|
|
||||||
General Public License ever published by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Library as you received it specifies that a proxy can decide
|
|
||||||
whether future versions of the GNU Lesser General Public License shall
|
|
||||||
apply, that proxy's public statement of acceptance of any version is
|
|
||||||
permanent authorization for you to choose that version for the
|
|
||||||
Library.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
|
@ -838,4 +672,3 @@ may consider it more useful to permit linking proprietary applications with
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License. But first, please read
|
Public License instead of this License. But first, please read
|
||||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
|
|
||||||
|
|
|
||||||
228
assets/logo.svg
|
|
@ -1,228 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="38.203144mm"
|
|
||||||
height="64.726036mm"
|
|
||||||
viewBox="0 0 38.203144 64.726037"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
xml:space="preserve"
|
|
||||||
sodipodi:docname="logo.svg"
|
|
||||||
inkscape:export-filename="logo.svg"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
|
||||||
id="namedview1"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
inkscape:zoom="1.9527497"
|
|
||||||
inkscape:cx="140.82706"
|
|
||||||
inkscape:cy="187.42801"
|
|
||||||
inkscape:window-width="1340"
|
|
||||||
inkscape:window-height="764"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg1" /><defs
|
|
||||||
id="defs1"><linearGradient
|
|
||||||
id="linearGradient106"><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop106" /><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0.23456791"
|
|
||||||
id="stop109" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.4526749"
|
|
||||||
id="stop108" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.59362137"
|
|
||||||
id="stop110" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="0.66358024"
|
|
||||||
id="stop111" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop107" /></linearGradient><linearGradient
|
|
||||||
id="swatch2"><stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop2" /></linearGradient><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient107"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient111"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient112"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient113"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /></defs><g
|
|
||||||
id="layer1"
|
|
||||||
transform="matrix(0.45379,0,0,0.45379,-29.224699,-23.939314)"><g
|
|
||||||
id="g82"
|
|
||||||
transform="matrix(0.16779066,0,0,0.16779066,64.401373,52.777012)"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1"><g
|
|
||||||
id="layer3-7"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-141.35649,1425.3526)"><g
|
|
||||||
id="g113"><g
|
|
||||||
id="layer1-8"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
id="path4861" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
|
|
||||||
id="use4863" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
|
|
||||||
id="use4865" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
|
|
||||||
id="use4867" /><path
|
|
||||||
id="path4873"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4875"
|
|
||||||
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4877"
|
|
||||||
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><g
|
|
||||||
id="layer2"
|
|
||||||
style="display:none;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(72.039038,-1799.4476)"><path
|
|
||||||
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
|
|
||||||
id="path6032"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#28b3fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
|
||||||
id="path5875"
|
|
||||||
d="M 385.59154,773.06721 H 284.75659 l -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
id="path5851"
|
|
||||||
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect5884"
|
|
||||||
width="48.834862"
|
|
||||||
height="226.22897"
|
|
||||||
x="-34.74221"
|
|
||||||
y="446.17056"
|
|
||||||
transform="rotate(-30)" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="path3428"
|
|
||||||
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /><use
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
xlink:href="#rect5884"
|
|
||||||
id="use4252"
|
|
||||||
transform="rotate(60,268.29786,489.4515)"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect4254"
|
|
||||||
width="5.3947482"
|
|
||||||
height="115.12564"
|
|
||||||
x="545.71014"
|
|
||||||
y="467.07007"
|
|
||||||
transform="rotate(30,575.23539,-154.13386)" /></g></g><g
|
|
||||||
id="layer3"
|
|
||||||
style="display:inline;opacity:1;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(60,407.11155,-715.78724)"
|
|
||||||
id="use3439-6"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-60,407.31177,-715.70016)"
|
|
||||||
id="use3445-0"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(180,407.41868,-715.7565)"
|
|
||||||
id="use3449-5"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
id="path4260-0" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(120,407.33916,-716.08356)"
|
|
||||||
id="use4354-5"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-120,407.28823,-715.86995)"
|
|
||||||
id="use4362-2"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1" /></g><g
|
|
||||||
id="g104"
|
|
||||||
style="fill:url(#linearGradient107);stroke:none"
|
|
||||||
transform="rotate(-13.062247,340.02897,-863.93232)"><path
|
|
||||||
id="use3449-5-0-0"
|
|
||||||
d="m 331.77633,-1001.5212 94.91305,225.23301 -55.78631,-6.46377 -25.29508,-60.48604 -39.63845,52.03815 -27.6842,-3.48227 -11.10824,-26.27568 56.46054,-74.04107 -25.77721,-61.5105 z"
|
|
||||||
style="fill:url(#linearGradient111);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-6"
|
|
||||||
d="m 457.02748,-744.14459 -70.00051,-234.1759 54.76023,12.45846 18.60597,62.86668 45.03324,-47.44663 27.14534,6.4555 8.2017,27.32283 -64.13603,67.50143 18.97452,63.93729 z"
|
|
||||||
style="display:inline;fill:url(#linearGradient112);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-4"
|
|
||||||
d="m 292.53533,-578.77105 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z"
|
|
||||||
style="display:inline;fill:url(#linearGradient113);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g></g></g></g></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 18 KiB |
BIN
assets/logo2.png
|
Before Width: | Height: | Size: 38 KiB |
238
assets/logo2.svg
|
|
@ -1,238 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="38.753597mm"
|
|
||||||
height="65.022255mm"
|
|
||||||
viewBox="0 0 38.753597 65.022256"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
xml:space="preserve"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
|
|
||||||
id="title39">DashNix</title><defs
|
|
||||||
id="defs1"><linearGradient
|
|
||||||
id="linearGradient106"><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop106" /><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0.23456791"
|
|
||||||
id="stop109" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.4526749"
|
|
||||||
id="stop108" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.59362137"
|
|
||||||
id="stop110" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="0.66358024"
|
|
||||||
id="stop111" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop107" /></linearGradient><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient107"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="pad" /></defs><g
|
|
||||||
id="layer1"
|
|
||||||
transform="matrix(0.45379,0,0,0.45379,-29.020506,-23.643099)"><g
|
|
||||||
id="g82"
|
|
||||||
transform="matrix(0.16779066,0,0,0.16779066,64.401373,52.777012)"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1"><g
|
|
||||||
id="layer3-7"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-141.35649,1425.3526)"><g
|
|
||||||
id="g113"><g
|
|
||||||
id="layer1-8"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
id="path4861" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1"
|
|
||||||
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
|
|
||||||
id="use4863" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
|
|
||||||
id="use4865" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
|
|
||||||
id="use4867" /><path
|
|
||||||
id="path4873"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4875"
|
|
||||||
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4877"
|
|
||||||
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><g
|
|
||||||
id="layer2"
|
|
||||||
style="display:none;fill:#f7f5f6;fill-opacity:1"
|
|
||||||
transform="translate(72.039038,-1799.4476)"><path
|
|
||||||
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
|
|
||||||
id="path6032"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
|
||||||
id="path5875"
|
|
||||||
d="M 385.59154,773.06721 H 284.75659 l -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
id="path5851"
|
|
||||||
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect5884"
|
|
||||||
width="48.834862"
|
|
||||||
height="226.22897"
|
|
||||||
x="-34.74221"
|
|
||||||
y="446.17056"
|
|
||||||
transform="rotate(-30)" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="path3428"
|
|
||||||
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /><use
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
xlink:href="#rect5884"
|
|
||||||
id="use4252"
|
|
||||||
transform="rotate(60,268.29786,489.4515)"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect4254"
|
|
||||||
width="5.3947482"
|
|
||||||
height="115.12564"
|
|
||||||
x="545.71014"
|
|
||||||
y="467.07007"
|
|
||||||
transform="rotate(30,575.23539,-154.13386)" /></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.362108"
|
|
||||||
d="m 17.647006,93.08153 c -2.137791,-3.629135 -3.886892,-6.781154 -3.886892,-7.004491 0,-0.223334 2.036859,-3.907974 4.526353,-8.18809 2.489494,-4.280113 4.526353,-7.872269 4.526353,-7.982568 0,-0.110298 -4.202399,-0.200542 -9.338664,-0.200542 H 4.1354931 L 2.2488007,66.408408 C 1.2111198,64.594822 0.36210825,62.964051 0.36210825,62.784474 c 0,-0.179578 0.83310065,-1.791759 1.85133475,-3.582627 l 1.8513347,-3.256122 13.4477393,-0.0031 13.447739,-0.0031 4.75902,-8.234844 4.75902,-8.234843 8.039166,-0.09755 8.039169,-0.09754 -0.718362,1.18387 C 55.443173,41.109708 47.744447,54.433923 38.729994,70.067947 29.715538,85.701971 22.158685,98.760409 21.936986,99.086701 21.60128,99.580783 20.884148,98.576936 17.647006,93.08153 Z"
|
|
||||||
id="path27"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path28"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path29"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path30"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path31"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path32"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path33"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path34"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path35"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /></g><g
|
|
||||||
id="layer3"
|
|
||||||
style="display:inline;opacity:1;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(60,407.11155,-715.78724)"
|
|
||||||
id="use3439-6"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-60,407.31177,-715.70016)"
|
|
||||||
id="use3445-0"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(180,407.41868,-715.7565)"
|
|
||||||
id="use3449-5"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
id="path4260-0" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(120,407.33916,-716.08356)"
|
|
||||||
id="use4354-5"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-120,407.28823,-715.86995)"
|
|
||||||
id="use4362-2"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
|
||||||
id="g104"
|
|
||||||
style="fill:url(#linearGradient107);stroke:none"
|
|
||||||
transform="rotate(-13.062247,340.02897,-863.93232)"><path
|
|
||||||
id="use3449-5-0-0"
|
|
||||||
d="m 331.77633,-1001.5212 94.91305,225.23301 -55.78631,-6.46377 -25.29508,-60.48604 -39.63845,52.03815 -27.6842,-3.48227 -11.10824,-26.27568 56.46054,-74.04107 -25.77721,-61.5105 z"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-6"
|
|
||||||
d="m 457.16967,-744.75745 -70.00051,-234.1759 54.76023,12.45846 18.60597,62.86668 45.03324,-47.44663 27.14534,6.4555 8.2017,27.32283 -64.13603,67.50143 18.97452,63.93729 z"
|
|
||||||
style="fill:#ff0d01;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-4"
|
|
||||||
d="m 277.21377,-582.32585 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z"
|
|
||||||
style="fill:#f8f641;fill-opacity:1" /></g></g></g></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path36"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 21.228346,98.82575 C 20.775825,98.187139 14.573556,87.698587 14.099569,86.770393 l -0.346608,-0.67875 1.796437,-3.213914 c 0.988041,-1.767653 3.067246,-5.409743 4.620457,-8.093538 1.553211,-2.683792 2.824019,-4.931476 2.824019,-4.99485 0,-0.110336 -11.090545,-0.351953 -16.3853984,-0.356972 L 4.0737178,69.429968 2.217913,66.175832 C 1.1972204,64.386056 0.36210825,62.847854 0.36210825,62.757606 c 0,-0.09025 0.87964515,-1.70058 1.95476695,-3.578513 l 1.954767,-3.414422 13.3895698,0.06926 13.389571,0.06926 4.821268,-8.307221 4.821271,-8.307221 3.145111,-0.04488 c 1.729813,-0.02469 5.235571,0.01605 7.790576,0.09053 l 4.645463,0.135412 -3.534135,6.15584 c -4.146422,7.222338 -16.886029,29.318862 -25.000346,43.362463 -3.135747,5.427098 -5.801825,9.976251 -5.924618,10.109228 -0.183451,0.198671 -0.288115,0.150249 -0.587027,-0.271581 z"
|
|
||||||
id="path37"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 97.636535,120.63066 c -1.389583,-2.41665 -4.382703,-7.63252 -6.651376,-11.59081 l -4.12486,-7.1969 -4.45825,-0.005 c -4.928423,-0.005 -14.743895,-0.1852 -14.838725,-0.27196 -0.03322,-0.0304 -1.827632,-3.096939 -3.987593,-6.814561 l -3.9272,-6.759314 17.535793,-0.04616 c 9.644687,-0.02539 25.387006,-0.02539 34.982936,0 l 17.44715,0.04616 -1.54239,2.715812 c -0.84832,1.493697 -2.61343,4.622573 -3.92248,6.953058 l -2.38008,4.237245 -9.38708,-0.11294 c -7.6636,-0.0922 -9.37652,-0.0697 -9.32957,0.12287 0.0316,0.1297 2.12168,3.83356 4.64454,8.23081 l 4.58703,7.995 -1.97119,3.3966 -1.9712,3.39659 -4.08947,0.0486 -4.08947,0.0486 z"
|
|
||||||
id="path38"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 87.802229,39.150266 C 80.890113,27.177278 73.023088,13.551901 70.319951,8.8716522 L 65.405158,0.36210825 68.59656,0.24891517 c 1.755271,-0.0622562 5.350472,-0.12261799 7.989335,-0.1341373 l 4.797935,-0.0209442 4.519855,7.89261083 c 2.48592,4.3409365 4.610279,8.0162745 4.7208,8.1674195 0.162204,0.22183 1.117147,-1.300038 4.953498,-7.8942647 l 4.752557,-8.16907224 h 3.92896 3.92895 l 2.03256,3.50763344 c 1.1179,1.9291986 2.03255,3.5544662 2.03255,3.6117061 0,0.05724 -3.01666,5.2908554 -6.70369,11.6302564 l -6.703688,11.526185 4.779848,8.329337 4.77986,8.329337 -3.94792,6.877008 c -2.17135,3.782353 -3.97949,6.908583 -4.01808,6.947175 -0.0386,0.03859 -5.725543,-9.725911 -12.637661,-21.698899 z"
|
|
||||||
id="path39"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /></g><metadata
|
|
||||||
id="metadata39"><rdf:RDF><cc:Work
|
|
||||||
rdf:about=""><cc:license
|
|
||||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /><dc:title>DashNix</dc:title></cc:Work><cc:License
|
|
||||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>
|
|
||||||
|
Before Width: | Height: | Size: 26 KiB |
238
assets/logo3.svg
|
|
@ -1,238 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="38.854057mm"
|
|
||||||
height="65.022255mm"
|
|
||||||
viewBox="0 0 38.854057 65.022256"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
xml:space="preserve"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
|
|
||||||
id="title39">DashNix</title><defs
|
|
||||||
id="defs1"><linearGradient
|
|
||||||
id="linearGradient106"><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop106" /><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0.23456791"
|
|
||||||
id="stop109" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.4526749"
|
|
||||||
id="stop108" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.59362137"
|
|
||||||
id="stop110" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="0.66358024"
|
|
||||||
id="stop111" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop107" /></linearGradient><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient107"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="pad" /></defs><g
|
|
||||||
id="layer1"
|
|
||||||
transform="matrix(0.45379,0,0,0.45379,-28.920048,-23.643099)"><g
|
|
||||||
id="g82"
|
|
||||||
transform="matrix(0.16779066,0,0,0.16779066,64.401373,52.777012)"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1"><g
|
|
||||||
id="layer3-7"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-141.35649,1425.3526)"><g
|
|
||||||
id="g113"><g
|
|
||||||
id="layer1-8"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
id="path4861" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
|
|
||||||
id="use4863" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
|
|
||||||
id="use4865" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
|
|
||||||
id="use4867" /><path
|
|
||||||
id="path4873"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><path
|
|
||||||
id="use4875"
|
|
||||||
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><path
|
|
||||||
id="use4877"
|
|
||||||
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><g
|
|
||||||
id="layer2"
|
|
||||||
style="display:none;fill:#f7f5f6;fill-opacity:1"
|
|
||||||
transform="translate(72.039038,-1799.4476)"><path
|
|
||||||
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
|
|
||||||
id="path6032"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
|
||||||
id="path5875"
|
|
||||||
d="M 385.59154,773.06721 H 284.75659 l -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
id="path5851"
|
|
||||||
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect5884"
|
|
||||||
width="48.834862"
|
|
||||||
height="226.22897"
|
|
||||||
x="-34.74221"
|
|
||||||
y="446.17056"
|
|
||||||
transform="rotate(-30)" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="path3428"
|
|
||||||
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /><use
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
xlink:href="#rect5884"
|
|
||||||
id="use4252"
|
|
||||||
transform="rotate(60,268.29786,489.4515)"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect4254"
|
|
||||||
width="5.3947482"
|
|
||||||
height="115.12564"
|
|
||||||
x="545.71014"
|
|
||||||
y="467.07007"
|
|
||||||
transform="rotate(30,575.23539,-154.13386)" /></g><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 17.647006,93.08153 c -2.137791,-3.629135 -3.886892,-6.781154 -3.886892,-7.004491 0,-0.223334 2.036859,-3.907974 4.526353,-8.18809 2.489494,-4.280113 4.526353,-7.872269 4.526353,-7.982568 0,-0.110298 -4.202399,-0.200542 -9.338664,-0.200542 H 4.1354931 L 2.2488007,66.408408 C 1.2111198,64.594822 0.36210825,62.964051 0.36210825,62.784474 c 0,-0.179578 0.83310065,-1.791759 1.85133475,-3.582627 l 1.8513347,-3.256122 13.4477393,-0.0031 13.447739,-0.0031 4.75902,-8.234844 4.75902,-8.234843 8.039166,-0.09755 8.039169,-0.09754 -0.718362,1.18387 C 55.443173,41.109708 47.744447,54.433923 38.729994,70.067947 29.715538,85.701971 22.158685,98.760409 21.936986,99.086701 21.60128,99.580783 20.884148,98.576936 17.647006,93.08153 Z"
|
|
||||||
id="path27"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path28"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path29"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path30"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path31"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path32"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path33"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path34"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path35"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /></g><g
|
|
||||||
id="layer3"
|
|
||||||
style="display:inline;opacity:1;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(60,407.11155,-715.78724)"
|
|
||||||
id="use3439-6"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-60,407.31177,-715.70016)"
|
|
||||||
id="use3445-0"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(180,407.41868,-715.7565)"
|
|
||||||
id="use3449-5"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
id="path4260-0" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(120,407.33916,-716.08356)"
|
|
||||||
id="use4354-5"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-120,407.28823,-715.86995)"
|
|
||||||
id="use4362-2"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
|
||||||
id="g104"
|
|
||||||
style="fill:url(#linearGradient107);stroke:none"
|
|
||||||
transform="rotate(-13.062247,340.02897,-863.93232)"><path
|
|
||||||
id="use3449-5-0-0"
|
|
||||||
d="m 331.77633,-1001.5212 94.91305,225.23301 -55.78631,-6.46377 -25.29508,-60.48604 -39.63845,52.03815 -27.6842,-3.48227 -11.10824,-26.27568 56.46054,-74.04107 -25.77721,-61.5105 z"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-6"
|
|
||||||
d="m 457.16967,-744.75745 -70.00051,-234.1759 54.76023,12.45846 18.60597,62.86668 45.03324,-47.44663 27.14534,6.4555 8.2017,27.32283 -64.13603,67.50143 18.97452,63.93729 z"
|
|
||||||
style="fill:#ff0d01;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-4"
|
|
||||||
d="m 277.21377,-582.32585 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z"
|
|
||||||
style="fill:#f8f641;fill-opacity:1" /></g></g></g></g><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path36"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 21.228346,98.82575 C 20.775825,98.187139 14.573556,87.698587 14.099569,86.770393 l -0.346608,-0.67875 1.796437,-3.213914 c 0.988041,-1.767653 3.067246,-5.409743 4.620457,-8.093538 1.553211,-2.683792 2.824019,-4.931476 2.824019,-4.99485 0,-0.110336 -11.090545,-0.351953 -16.3853984,-0.356972 L 4.0737178,69.429968 2.217913,66.175832 C 1.1972204,64.386056 0.36210825,62.847854 0.36210825,62.757606 c 0,-0.09025 0.87964515,-1.70058 1.95476695,-3.578513 l 1.954767,-3.414422 13.3895698,0.06926 13.389571,0.06926 4.821268,-8.307221 4.821271,-8.307221 3.145111,-0.04488 c 1.729813,-0.02469 5.235571,0.01605 7.790576,0.09053 l 4.645463,0.135412 -3.534135,6.15584 c -4.146422,7.222338 -16.886029,29.318862 -25.000346,43.362463 -3.135747,5.427098 -5.801825,9.976251 -5.924618,10.109228 -0.183451,0.198671 -0.288115,0.150249 -0.587027,-0.271581 z"
|
|
||||||
id="path37"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 97.636535,120.63066 c -1.389583,-2.41665 -4.382703,-7.63252 -6.651376,-11.59081 l -4.12486,-7.1969 -4.45825,-0.005 c -4.928423,-0.005 -14.743895,-0.1852 -14.838725,-0.27196 -0.03322,-0.0304 -1.827632,-3.096939 -3.987593,-6.814561 l -3.9272,-6.759314 17.535793,-0.04616 c 9.644687,-0.02539 25.387006,-0.02539 34.982936,0 l 17.44715,0.04616 -1.54239,2.715812 c -0.84832,1.493697 -2.61343,4.622573 -3.92248,6.953058 l -2.38008,4.237245 -9.38708,-0.11294 c -7.6636,-0.0922 -9.37652,-0.0697 -9.32957,0.12287 0.0316,0.1297 2.12168,3.83356 4.64454,8.23081 l 4.58703,7.995 -1.97119,3.3966 -1.9712,3.39659 -4.08947,0.0486 -4.08947,0.0486 z"
|
|
||||||
id="path38"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#b2dff8;fill-opacity:0;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 87.802229,39.150266 C 80.890113,27.177278 73.023088,13.551901 70.319951,8.8716522 L 65.405158,0.36210825 68.59656,0.24891517 c 1.755271,-0.0622562 5.350472,-0.12261799 7.989335,-0.1341373 l 4.797935,-0.0209442 4.519855,7.89261083 c 2.48592,4.3409365 4.610279,8.0162745 4.7208,8.1674195 0.162204,0.22183 1.117147,-1.300038 4.953498,-7.8942647 l 4.752557,-8.16907224 h 3.92896 3.92895 l 2.03256,3.50763344 c 1.1179,1.9291986 2.03255,3.5544662 2.03255,3.6117061 0,0.05724 -3.01666,5.2908554 -6.70369,11.6302564 l -6.703688,11.526185 4.779848,8.329337 4.77986,8.329337 -3.94792,6.877008 c -2.17135,3.782353 -3.97949,6.908583 -4.01808,6.947175 -0.0386,0.03859 -5.725543,-9.725911 -12.637661,-21.698899 z"
|
|
||||||
id="path39"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /></g><metadata
|
|
||||||
id="metadata39"><rdf:RDF><cc:Work
|
|
||||||
rdf:about=""><cc:license
|
|
||||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /><dc:title>DashNix</dc:title></cc:Work><cc:License
|
|
||||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>
|
|
||||||
|
Before Width: | Height: | Size: 24 KiB |
|
|
@ -1,141 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-filename="nixos-catpuccin.png"
|
|
||||||
sodipodi:docname="catppuccinnix.svg"
|
|
||||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
|
||||||
version="1.1"
|
|
||||||
id="svg2"
|
|
||||||
viewBox="0 0 3225.0001 1350"
|
|
||||||
height="1440"
|
|
||||||
width="3440"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
||||||
<defs
|
|
||||||
id="defs4" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
inkscape:showpageshadow="false"
|
|
||||||
borderlayer="true"
|
|
||||||
inkscape:pagecheckerboard="false"
|
|
||||||
units="px"
|
|
||||||
inkscape:document-rotation="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-top="0"
|
|
||||||
inkscape:snap-global="true"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-height="1440"
|
|
||||||
inkscape:window-width="3440"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:current-layer="g2"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:cy="745.58828"
|
|
||||||
inkscape:cx="2124.2232"
|
|
||||||
inkscape:zoom="0.63976327"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:pageopacity="1"
|
|
||||||
borderopacity="1.0"
|
|
||||||
bordercolor="#666666"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
id="base"
|
|
||||||
inkscape:deskcolor="#d1d1d1" />
|
|
||||||
<metadata
|
|
||||||
id="metadata7">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
id="g2"
|
|
||||||
inkscape:label="nix"
|
|
||||||
inkscape:export-filename="2kwide.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
inkscape:groupmode="layer">
|
|
||||||
<rect
|
|
||||||
style="display:inline;fill:#1e1e2e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54331;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke markers fill"
|
|
||||||
id="rect1"
|
|
||||||
width="3225"
|
|
||||||
height="1350"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
inkscape:label="background"
|
|
||||||
inkscape:export-filename="2kwidepng"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96" />
|
|
||||||
<g
|
|
||||||
transform="translate(-233.46209,403.59287)"
|
|
||||||
style="display:inline;opacity:1"
|
|
||||||
inkscape:label="logo"
|
|
||||||
id="layer3"
|
|
||||||
inkscape:groupmode="layer">
|
|
||||||
<g
|
|
||||||
style="stroke-width:11.0512"
|
|
||||||
transform="matrix(0.11707329,0,0,0.11707336,1503.267,99.424817)"
|
|
||||||
id="g955">
|
|
||||||
<g
|
|
||||||
transform="matrix(11.047619,0,0,11.047619,-1572.2888,9377.7107)"
|
|
||||||
id="g869"
|
|
||||||
inkscape:export-filename="g869.svg"
|
|
||||||
inkscape:export-xdpi="600"
|
|
||||||
inkscape:export-ydpi="600">
|
|
||||||
<g
|
|
||||||
transform="rotate(-60,226.35754,-449.37199)"
|
|
||||||
id="g932"
|
|
||||||
style="fill:#f9e2af;fill-opacity:1;stroke-width:11.0512">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 449.71876,-420.51322 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="opacity:1;fill:#f9e2af;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path4260-0"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fab387;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="use3439-6"
|
|
||||||
d="m 353.65459,-797.57947 -122.21762,211.66311 -28.53475,-48.37004 32.93837,-56.68746 -65.41521,-0.17187 -13.94166,-24.16966 14.23639,-24.72105 93.11171,0.294 33.46379,-57.6904 z"
|
|
||||||
style="fill:#f38ba8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="use3449-5"
|
|
||||||
d="m 505.28844,-721.12474 -122.19683,-211.67512 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4901 33.22946,57.8257 z"
|
|
||||||
style="fill:#89b4fa;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="use4354-5"
|
|
||||||
d="m 451.30201,-803.62004 -244.41444,-0.012 27.62231,-48.89684 65.56197,0.18174 -32.55876,-56.73718 13.96071,-24.15866 28.52725,-0.0314 46.30123,80.7841 66.69317,0.13525 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cba6f7;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="use4362-2"
|
|
||||||
d="m 460.90516,-633.96606 122.21762,-211.66312 28.53475,48.37004 -32.93837,56.68746 65.41521,0.17187 13.94166,24.16966 -14.23639,24.72105 -93.11171,-0.294 -33.46371,57.69035 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a6e3a1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:33.1535;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 7.3 KiB |
|
|
@ -1,46 +1,33 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
hostName,
|
hostName,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
username = config.conf.username;
|
username = config.conf.username;
|
||||||
in {
|
in
|
||||||
imports = [
|
{
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
];
|
|
||||||
|
|
||||||
wsl.enable = mkDashDefault config.conf.wsl;
|
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot = lib.mkIf (!config.conf.wsl) {
|
boot = {
|
||||||
consoleLogLevel = mkDashDefault 0;
|
consoleLogLevel = 0;
|
||||||
|
|
||||||
lanzaboote = lib.mkIf config.conf.secureBoot {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
pkiBundle = mkDashDefault "/var/lib/sbctl";
|
|
||||||
settings.reboot-for-bitlocker = mkDashDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable =
|
enable = true;
|
||||||
if config.conf.secureBoot
|
|
||||||
then lib.mkForce false
|
|
||||||
else if config.conf.useSystemdBootloader
|
|
||||||
then true
|
|
||||||
else mkDashDefault false;
|
|
||||||
configurationLimit = 5;
|
configurationLimit = 5;
|
||||||
};
|
};
|
||||||
efi.canTouchEfiVariables = mkDashDefault true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
plymouth = {
|
||||||
kernelPackages = mkDashDefault pkgs.linuxPackages_latest;
|
enable = true;
|
||||||
|
};
|
||||||
|
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||||
initrd = {
|
initrd = {
|
||||||
verbose = mkDashDefault false;
|
verbose = false;
|
||||||
availableKernelModules = [
|
availableKernelModules = [
|
||||||
"nvme"
|
"nvme"
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
|
|
@ -50,107 +37,76 @@ in {
|
||||||
"sd_mod"
|
"sd_mod"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
kernelParams =
|
kernelParams = [
|
||||||
[
|
|
||||||
''resume="PARTLABEL=SWAP"''
|
''resume="PARTLABEL=SWAP"''
|
||||||
''quiet''
|
''quiet''
|
||||||
''udev.log_level=3''
|
''udev.log_level=3''
|
||||||
]
|
] ++ config.conf.boot_params;
|
||||||
++ config.conf.bootParams;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
networking = {
|
networking = {
|
||||||
useDHCP = mkDashDefault true;
|
useDHCP = lib.mkDefault true;
|
||||||
networkmanager.enable = mkDashDefault true;
|
networkmanager.enable = true;
|
||||||
hostName = mkDashDefault hostName;
|
hostName = hostName;
|
||||||
};
|
};
|
||||||
|
|
||||||
time = {
|
# Set your time zone.
|
||||||
timeZone = mkDashDefault config.conf.timezone;
|
time.timeZone = config.conf.timezone;
|
||||||
hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime;
|
|
||||||
};
|
|
||||||
|
|
||||||
i18n.defaultLocale = mkDashDefault config.conf.locale;
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = config.conf.locale;
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
services = {
|
services = {
|
||||||
lorri.enable = mkDashDefault true;
|
flatpak.enable = true;
|
||||||
xserver.enable = mkDashDefault true;
|
xserver.enable = true;
|
||||||
fstrim.enable = mkDashDefault true;
|
fstrim.enable = lib.mkDefault true;
|
||||||
pulseaudio.enable = mkDashDefault false;
|
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = mkDashDefault true;
|
enable = true;
|
||||||
alsa = {
|
alsa = {
|
||||||
enable = mkDashDefault true;
|
enable = true;
|
||||||
support32Bit = mkDashDefault true;
|
support32Bit = true;
|
||||||
};
|
};
|
||||||
jack.enable = mkDashDefault true;
|
jack.enable = true;
|
||||||
pulse.enable = mkDashDefault true;
|
pulse.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.hostPlatform = mkDashDefault config.conf.system;
|
nixpkgs.hostPlatform = lib.mkDefault config.conf.system;
|
||||||
nix = {
|
nix = {
|
||||||
gc = {
|
gc = {
|
||||||
automatic = mkDashDefault true;
|
automatic = true;
|
||||||
dates = mkDashDefault "weekly";
|
dates = "weekly";
|
||||||
options = mkDashDefault "--delete-older-than 7d --delete-generations +5";
|
options = "--delete-older-than 7d --delete-generations +5";
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
trusted-users = [username];
|
trusted-users = [ username ];
|
||||||
auto-optimise-store = mkDashDefault true;
|
auto-optimise-store = true;
|
||||||
|
|
||||||
builders-use-substitutes = mkDashDefault true;
|
experimental-features = "nix-command flakes";
|
||||||
|
|
||||||
trusted-substituters = [
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"https://anyrun.cachix.org"
|
|
||||||
"https://oxipaste.cachix.org"
|
|
||||||
"https://oxinoti.cachix.org"
|
|
||||||
"https://oxishut.cachix.org"
|
|
||||||
"https://oxidash.cachix.org"
|
|
||||||
"https://oxicalc.cachix.org"
|
|
||||||
"https://hyprdock.cachix.org"
|
|
||||||
"https://reset.cachix.org"
|
|
||||||
"https://dashvim.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
|
||||||
"oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc="
|
|
||||||
"oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc="
|
|
||||||
"oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU="
|
|
||||||
"oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30="
|
|
||||||
"oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ="
|
|
||||||
"hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y="
|
|
||||||
"reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo="
|
|
||||||
"dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0="
|
|
||||||
];
|
|
||||||
|
|
||||||
experimental-features = mkDashDefault "nix-command flakes pipe-operators";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
hardware = {
|
hardware = {
|
||||||
cpu.${config.conf.cpu}.updateMicrocode =
|
pulseaudio.enable = false;
|
||||||
mkDashDefault
|
cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
config.hardware.enableRedistributableFirmware;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
security.rtkit.enable = mkDashDefault true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
XDG_CACHE_HOME = mkDashDefault "$HOME/.cache";
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
DIRENV_LOG_FORMAT = mkDashDefault "";
|
DIRENV_LOG_FORMAT = "";
|
||||||
QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# allows user change later on
|
# allows user change later on
|
||||||
users = {
|
users = {
|
||||||
mutableUsers = mkDashDefault true;
|
mutableUsers = true;
|
||||||
users.${username} = {
|
users.${username} = {
|
||||||
isNormalUser = mkDashDefault true;
|
isNormalUser = true;
|
||||||
description = mkDashDefault username;
|
description = username;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
|
|
@ -159,8 +115,6 @@ in {
|
||||||
"vboxusers"
|
"vboxusers"
|
||||||
"video"
|
"video"
|
||||||
"audio"
|
"audio"
|
||||||
"scanner"
|
|
||||||
"lp"
|
|
||||||
];
|
];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
home-manager
|
home-manager
|
||||||
|
|
@ -168,7 +122,8 @@ in {
|
||||||
];
|
];
|
||||||
# this password will only last for the first login
|
# this password will only last for the first login
|
||||||
# e.g. login, then change to whatever else, this also ensures no public hash is available
|
# e.g. login, then change to whatever else, this also ensures no public hash is available
|
||||||
password = mkDashDefault "firstlogin";
|
password = "firstlogin";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
base/env.nix
|
|
@ -1,24 +1,18 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment = {
|
environment = {
|
||||||
variables = {
|
variables = {
|
||||||
GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
|
GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
|
||||||
NEOVIDE_MAXIMIZED = mkDashDefault "0";
|
NEOVIDE_MAXIMIZED = "0";
|
||||||
GPG_TTY = mkDashDefault "$(tty)";
|
GPG_TTY = "$(tty)";
|
||||||
EDITOR = mkDashDefault "neovide --no-fork";
|
EDITOR = "neovide --no-fork";
|
||||||
SUDO_EDITOR = mkDashDefault "neovide --no-fork";
|
SUDO_EDITOR = "neovide --no-fork";
|
||||||
SCRIPTS = mkDashDefault "$HOME/.config/scripts";
|
SCRIPTS = "$HOME/.config/scripts";
|
||||||
};
|
};
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
NIXOS_OZONE_WL = mkDashDefault "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
GOPATH = mkDashDefault "$HOME/.go";
|
GOPATH = "$HOME/.go";
|
||||||
FLAKE = mkDashDefault config.conf.nixosConfigPath;
|
FLAKE = config.conf.nix_path;
|
||||||
NH_FLAKE = mkDashDefault config.conf.nixosConfigPath;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
{
|
{ pkgs, ... }:
|
||||||
mkDashDefault,
|
let
|
||||||
pkgs,
|
layout = pkgs.writeText "dashie" ''
|
||||||
...
|
xkb_symbols "dashie"
|
||||||
}: let
|
|
||||||
layout = pkgs.writeText "enIntUmlaut" ''
|
|
||||||
xkb_symbols "enIntUmlaut"
|
|
||||||
{
|
{
|
||||||
include "us(basic)"
|
include "us(basic)"
|
||||||
include "level3(ralt_switch)"
|
include "level3(ralt_switch)"
|
||||||
|
|
@ -13,11 +10,12 @@
|
||||||
key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
|
key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
|
||||||
};
|
};
|
||||||
'';
|
'';
|
||||||
in {
|
in
|
||||||
environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp];
|
{
|
||||||
services.xserver.xkb.extraLayouts.enIntUmlaut = {
|
environment.systemPackages = [ pkgs.xorg.xkbcomp ];
|
||||||
|
services.xserver.xkb.extraLayouts.dashie = {
|
||||||
description = "US layout with 'umlaut'";
|
description = "US layout with 'umlaut'";
|
||||||
languages = ["eng"];
|
languages = [ "eng" ];
|
||||||
symbolsFile = "${layout}";
|
symbolsFile = "${layout}";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix
|
# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
buildSystems,
|
build_systems,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
makeOptionsDoc = configuration: pkgs.nixosOptionsDoc {options = configuration;};
|
let
|
||||||
|
makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; };
|
||||||
generateDocs = obj: ''
|
generateDocs = obj: ''
|
||||||
touch src/${obj.fst}.md
|
touch src/${obj.fst}.md
|
||||||
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
|
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
|
||||||
|
|
@ -13,38 +14,18 @@
|
||||||
summaryAppend = name: ''
|
summaryAppend = name: ''
|
||||||
echo "- [${name}](${name}.md)" >> src/SUMMARY.md
|
echo "- [${name}](${name}.md)" >> src/SUMMARY.md
|
||||||
'';
|
'';
|
||||||
system = (buildSystems {root = ../example/.;})."example".options;
|
system = (build_systems ../example/.)."example".options;
|
||||||
makeOptionsDocPrograms = names: pkgs.nixosOptionsDoc {options = lib.attrByPath (lib.splitString "." names) null system.mods;};
|
makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; };
|
||||||
conf = makeOptionsDoc system.conf;
|
conf = makeOptionsDoc system.conf;
|
||||||
basePath = ../modules/programs;
|
paths = builtins.readDir ../modules/programs;
|
||||||
pathToAttrs = path:
|
names = lib.lists.remove "default" (
|
||||||
lib.attrsets.mapAttrsToList (
|
map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths)
|
||||||
name: meta: {
|
|
||||||
inherit name;
|
|
||||||
inherit meta;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
(builtins.readDir path);
|
|
||||||
pathToStrings = path: prefix: let
|
|
||||||
mapFn = attrs:
|
|
||||||
if attrs.meta == "directory"
|
|
||||||
then pathToStrings "${basePath}/${attrs.name}" attrs.name
|
|
||||||
else if prefix != ""
|
|
||||||
then "${prefix}.${attrs.name}"
|
|
||||||
else attrs.name;
|
|
||||||
in
|
|
||||||
map
|
|
||||||
mapFn
|
|
||||||
(pathToAttrs path);
|
|
||||||
filteredNames = builtins.filter (names: !(lib.strings.hasInfix "default" names)) (
|
|
||||||
map (name: lib.strings.removeSuffix ".nix" name) (lib.lists.flatten (pathToStrings basePath ""))
|
|
||||||
);
|
);
|
||||||
deduplicatedNames = map (name: lib.strings.splitString "." name |> lib.lists.unique |> lib.strings.concatStringsSep ".") filteredNames;
|
mods = map makeOptionsDocPrograms names;
|
||||||
mods = map makeOptionsDocPrograms deduplicatedNames;
|
docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods));
|
||||||
docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists deduplicatedNames mods));
|
summary = lib.strings.concatStringsSep " " (map summaryAppend names);
|
||||||
summary = lib.strings.concatStringsSep " " (map summaryAppend deduplicatedNames);
|
|
||||||
in
|
in
|
||||||
pkgs.stdenvNoCC.mkDerivation {
|
pkgs.stdenvNoCC.mkDerivation {
|
||||||
name = "dashNix-book";
|
name = "dashNix-book";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
|
|
@ -58,4 +39,4 @@ in
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
${pkgs.mdbook}/bin/mdbook build --dest-dir $out
|
${pkgs.mdbook}/bin/mdbook build --dest-dir $out
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
<div align = center>
|
```
|
||||||
|
██████ █████ ███████ ██ ██ ███ ██ ██ ██ ██
|
||||||
|
██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██
|
||||||
|
██ ██ ███████ ███████ ███████ ██ ██ ██ ██ ███
|
||||||
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
██████ ██ ██ ███████ ██ ██ ██ ████ ██ ██ ██
|
||||||
|
```
|
||||||
|
|
||||||

|
A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system.
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
An opinionated flake to bootstrap NixOS systems with default configurations for various programs and services from both NixOS and HomeManager which can be enabled, disabled, configured or replaced at will.
|
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
|
|
@ -12,7 +14,7 @@ This flake is intended to be used as an input to your own NixOS configuration:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
dashNix = {
|
dashNix = {
|
||||||
url = "github:Xetibo/DashNix";
|
url = "github:DashieTM/DashNix";
|
||||||
inputs = {
|
inputs = {
|
||||||
# ensure these are here to update the packages on your own
|
# ensure these are here to update the packages on your own
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -23,48 +25,12 @@ dashNix = {
|
||||||
|
|
||||||
You can then configure your systems in your flake outputs with a provided library command:
|
You can then configure your systems in your flake outputs with a provided library command:
|
||||||
|
|
||||||
Please note that overriding inputs will invalidate the cache configuration, this means you will have to add this manually:
|
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
builders-use-substitutes = true;
|
nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.);
|
||||||
|
|
||||||
extra-substituters = [
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"https://anyrun.cachix.org"
|
|
||||||
"https://cache.garnix.io"
|
|
||||||
"https://oxipaste.cachix.org"
|
|
||||||
"https://oxinoti.cachix.org"
|
|
||||||
"https://oxishut.cachix.org"
|
|
||||||
"https://oxidash.cachix.org"
|
|
||||||
"https://oxicalc.cachix.org"
|
|
||||||
"https://hyprdock.cachix.org"
|
|
||||||
"https://reset.cachix.org"
|
|
||||||
"https://dashvim.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
extra-trusted-public-keys = [
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
|
||||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
|
||||||
"oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc="
|
|
||||||
"oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc="
|
|
||||||
"oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU="
|
|
||||||
"oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30="
|
|
||||||
"oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ="
|
|
||||||
"hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y="
|
|
||||||
"reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo="
|
|
||||||
"dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0="
|
|
||||||
];
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```nix
|
The paremeter specifies where your hosts directory will be placed, in said directory you can then create a directory for each system.
|
||||||
nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; };
|
Note, the name of the systems directory is also its hostname.
|
||||||
```
|
|
||||||
|
|
||||||
This command will build each system that is placed within the hosts/ directory.
|
|
||||||
In this directory create one directory for each system you want to configure with DashNix.
|
|
||||||
This will automatically pick up the hostname for the system and look for 3 different files that are explained below.
|
|
||||||
(Optionally, you can also change the parameter root (./.) to define a different starting directory than hosts/)
|
|
||||||
|
|
||||||
In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration.
|
In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration.
|
||||||
The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional)
|
The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional)
|
||||||
|
|
@ -89,71 +55,58 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{config, ...}: {
|
{config, ...}: {
|
||||||
# TODO denote important changes
|
|
||||||
|
|
||||||
# variables for system
|
# variables for system
|
||||||
|
# TODO important changes
|
||||||
conf = {
|
conf = {
|
||||||
# TODO your username
|
# change this to your monitor and your pc name
|
||||||
|
# should be something like DP-1
|
||||||
|
monitor = "YOURMONITOR";
|
||||||
|
# your username
|
||||||
username = "YOURNAME";
|
username = "YOURNAME";
|
||||||
# TODO only needed when you use intel -> amd is default
|
# TODO only needed when you use intel -> amd is default
|
||||||
# cpu = "intel";
|
# cpu = "intel";
|
||||||
# TODO your xkb layout
|
|
||||||
locale = "something.UTF-8";
|
locale = "something.UTF-8";
|
||||||
# TODO your timezone
|
|
||||||
timezone = "CONTINENT/CITY";
|
timezone = "CONTINENT/CITY";
|
||||||
};
|
};
|
||||||
|
|
||||||
# modules
|
# modules
|
||||||
mods = {
|
mods = {
|
||||||
# default disk config has root home boot and swap partition, overwrite if you want something different
|
# default disk config has root home boot and swap partition, overwrite if you want something different
|
||||||
|
drives = {
|
||||||
|
defaultDrives.enable = false;
|
||||||
|
extraDrives = [
|
||||||
|
{
|
||||||
|
name = "boot";
|
||||||
|
drive = {
|
||||||
|
device = "/dev/disk/by-label/BOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "";
|
||||||
|
drive = {
|
||||||
|
device = "/dev/disk/by-label/ROOT";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [ "noatime" "nodiratime" "discard" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
sops.enable = false;
|
sops.enable = false;
|
||||||
nextcloud.enable = false;
|
nextcloud.enable = false;
|
||||||
wm.monitors = [
|
hyprland.monitor = [
|
||||||
# Example
|
# default
|
||||||
# {
|
# TODO change this to your resolution
|
||||||
# name = "DP-1";
|
"${config.conf.monitor},1920x1080@144,0x0,1"
|
||||||
# resolutionX = 3440;
|
# all others
|
||||||
# resolutionY = 1440;
|
",highrr,auto,1"
|
||||||
# refreshrate = 180;
|
|
||||||
# positionX = 2560;
|
|
||||||
# positionY = 0;
|
|
||||||
# scale = 1;
|
|
||||||
# transform = "0";
|
|
||||||
# vrr = false;
|
|
||||||
# }
|
|
||||||
];
|
];
|
||||||
|
# or amd, whatever you have
|
||||||
gpu.nvidia.enable = true;
|
gpu.nvidia.enable = true;
|
||||||
kdeConnect.enable = true;
|
kde_connect.enable = true;
|
||||||
# login manager:
|
# TODO change this to your main resolution
|
||||||
# default is greetd
|
# -> this will be your login manager
|
||||||
# greetd = { };
|
greetd = { resolution = "3440x1440@180"; };
|
||||||
# sddm = { };
|
|
||||||
# gdm = { };
|
|
||||||
drives = {
|
|
||||||
# default assumes ROOT, BOOT, HOME and SWAP labaled drives exist
|
|
||||||
# for an example without HOME see below
|
|
||||||
# defaultDrives.enable = false;
|
|
||||||
# extraDrives = [
|
|
||||||
# {
|
|
||||||
# name = "boot";
|
|
||||||
# drive = {
|
|
||||||
# device = "/dev/disk/by-label/BOOT";
|
|
||||||
# fsType = "vfat";
|
|
||||||
# options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ];
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "";
|
|
||||||
# drive = {
|
|
||||||
# device = "/dev/disk/by-label/ROOT";
|
|
||||||
# fsType = "ext4";
|
|
||||||
# options = [ "noatime" "nodiratime" "discard" ];
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# You can also use disko to format your disks on installation.
|
|
||||||
# Please refer to the Documentation about the drives module for an example.
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -162,168 +115,66 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang
|
||||||
|
|
||||||
After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like.
|
After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like.
|
||||||
|
|
||||||
## Configuring pkgs
|
## Nixos and Home-manager Modules
|
||||||
|
|
||||||
While DashNix offers a default pkgs config, you may want to permit an unsecure packages,
|
You can add additional modules or remove all of them by overriding parameters to the build_systems command:
|
||||||
add additional modules/inputs, or add an overlay to them.
|
|
||||||
You can configure both stable and unstable pkgs the following way:
|
|
||||||
|
|
||||||
Please note that modules and inputs are merged together to ensure functionality.
|
|
||||||
|
|
||||||
```nix
|
|
||||||
currentSystem = "x86_64-linux";
|
|
||||||
permittedPackages = [
|
|
||||||
"some package"
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
system = currentSystem;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
permittedInsecurePackages = permittedPackages;
|
|
||||||
};
|
|
||||||
inputs = {
|
|
||||||
# Some inputs
|
|
||||||
}
|
|
||||||
mods = {
|
|
||||||
home = [
|
|
||||||
# Some home manager module
|
|
||||||
];
|
|
||||||
nixos = [
|
|
||||||
# Some nixos module
|
|
||||||
];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
unstableBundle = {
|
|
||||||
pkgs = inputs.unstable;
|
|
||||||
inherit config mods;
|
|
||||||
};
|
|
||||||
inputs.dashNix.dashNixLib.buildSystems {
|
|
||||||
root = ./.;
|
|
||||||
inherit unstableBundle;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
With this you could also change your input to something different should you wish to do so.
|
|
||||||
Note that overriding inputs via the flake still works,
|
|
||||||
this way however ensures you can also configure the inputs.
|
|
||||||
|
|
||||||
## Stable/Unstable
|
|
||||||
|
|
||||||
Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops.
|
|
||||||
This can be done with the overridePkgs flag for the lib function:
|
|
||||||
|
|
||||||
(overridePkgs simply inverts the default bundle that is used for the nix standard library as well as NixOS itself)
|
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
nixosConfigurations =
|
nixosConfigurations =
|
||||||
inputs.dashNix.dashNixLib.buildSystems {
|
let
|
||||||
root = ./stable;
|
additionalMods = {
|
||||||
inherit stableBundle;
|
nixos = [
|
||||||
overridePkgs = true;
|
# your modules
|
||||||
|
]; home = [
|
||||||
|
# your modules
|
||||||
|
];
|
||||||
}
|
}
|
||||||
// inputs.dashNix.dashNixLib.buildSystems {
|
# passing this parameter will override the existing modules
|
||||||
inherit unstableBundle;
|
mods = {
|
||||||
root = ./unstable;
|
nixos = [];
|
||||||
};
|
home = [];
|
||||||
|
}
|
||||||
|
in
|
||||||
|
(inputs.dashNix.dashNixLib.build_systems [
|
||||||
|
"system1"
|
||||||
|
] ./. mods additionalMods);
|
||||||
```
|
```
|
||||||
|
|
||||||
You can now place your systems in the respective directories.
|
|
||||||
Keep in mind that the hosts directory will still need to exist in each variant.
|
|
||||||
E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop
|
|
||||||
|
|
||||||
# Installation via ISO
|
|
||||||
|
|
||||||
You can find a custom ISO in the releases: [Link](https://github.com/Xetibo/DashNix/releases).
|
|
||||||
With this, you will receive the example config in /iso/example alongside the gnome desktop environment,
|
|
||||||
as well as a few tools like gnome-disks, Neovim, Vscodium, a browser etc.
|
|
||||||
|
|
||||||
Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before.
|
|
||||||
|
|
||||||
## Commands
|
|
||||||
|
|
||||||
First, copy the read-only config from /iso/example-config to a location of your choice.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cp /iso/example-config ~/config -r
|
|
||||||
```
|
|
||||||
|
|
||||||
Then configure as you please and choose a command below depending on your disk installation variant.
|
|
||||||
|
|
||||||
Installation via manual configuration:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo nixos-install --flake <flakelocation>#<hostname> --root <mountpoint> --option experimental-features "nix-command flakes pipe-operators"
|
|
||||||
#example
|
|
||||||
#nixos-install --flake ~/config#globi --root /mnt --option experimental-features "nix-command flakes pipe-operators"
|
|
||||||
```
|
|
||||||
|
|
||||||
Installation via disko:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo disko-install --flake <flakelocation>#<hostname> --disk <disk-name> <disk-device> --option experimental-features "nix-command flakes pipe-operators"
|
|
||||||
#example
|
|
||||||
#disko-install -- --flake ~/config#globi --disk main /dev/nvme0n1 --option experimental-features "nix-command flakes pipe-operators"
|
|
||||||
```
|
|
||||||
|
|
||||||
# Installation via flake
|
|
||||||
|
|
||||||
If you already have nix installed, you can instead just copy the default config onto your system and install DashNix with it.
|
|
||||||
To create the example config for a base to start with, you can just run this flake with the mkFlake command:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nix run github:Xetibo/DashNix#mkFlake
|
|
||||||
```
|
|
||||||
|
|
||||||
This command will put the default configuration into $HOME/gits/nixos
|
|
||||||
|
|
||||||
# Modules
|
# Modules
|
||||||
|
|
||||||
This configuration features several modules that can be used as preconfigured "recipies".
|
This configuration features several modules that can be used as preconfigured "recipies".
|
||||||
These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system.
|
These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system.
|
||||||
For package lists, please check the individual modules, as the lists can be long.
|
For package lists, please check the individual modules, as the lists can be long.
|
||||||
|
|
||||||
- Hyprland: Installs and configures Hyprland with various additional packages
|
|
||||||
- Niri: Installs and configures Niri with various additional packages
|
|
||||||
- acpid : Enables the acpid daemon
|
|
||||||
- base packages : A list of system packages to be installed by default
|
- base packages : A list of system packages to be installed by default
|
||||||
- bluetooth : Configures/enables bluetooth and installs tools for bluetooth
|
- home packages : A list of home packages to be installed by default
|
||||||
|
- media packages : A list of media packages to be installed by default
|
||||||
- coding packages : A list of coding packages to be installed by default
|
- coding packages : A list of coding packages to be installed by default
|
||||||
|
- acpid : Enables the acpid daemon
|
||||||
|
- bluetooth : Configures/enables bluetooth and installs tools for bluetooth
|
||||||
- drives : A drive configuration module
|
- drives : A drive configuration module
|
||||||
- firefox: Enables and configures firefox (extensions and settings)
|
- flatpak : Installs and enables declarative flatpak
|
||||||
- fish: Enables and configures fish shell
|
|
||||||
- gaming : Configures gaming related features (launchers, gamemode)
|
|
||||||
- git : Git key and config module
|
|
||||||
- gnome_services : Gnome services for minimal enviroments -> Window managers etc
|
- gnome_services : Gnome services for minimal enviroments -> Window managers etc
|
||||||
- gpu : GPU settings (AMD)
|
- gpu : GPU settings (AMD)
|
||||||
- greetd : Enables and configures the greetd/regreet login manager with Hyprland
|
- greetd : Enables and configures the greetd/regreet login manager with Hyprland
|
||||||
- home packages : A list of home packages to be installed by default
|
|
||||||
- kde_connect : Enables KDE connect and opens its ports
|
- kde_connect : Enables KDE connect and opens its ports
|
||||||
- keepassxc : Configures keepassxc
|
|
||||||
- kitty: Enables and configures kitty terminal
|
|
||||||
- layout : Modules to configure keyboard layout system wide
|
- layout : Modules to configure keyboard layout system wide
|
||||||
- media packages : A list of media packages to be installed by default
|
|
||||||
- mime: Mime type configuration
|
|
||||||
- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud)
|
|
||||||
- oxi: My own programs, can be selectively disabled, or as a whole
|
|
||||||
- piper : Installs and enables piper alongside its daemon
|
- piper : Installs and enables piper alongside its daemon
|
||||||
- plymouth: enable or disable plymouth
|
|
||||||
- printing : Enables and configures printing services
|
- printing : Enables and configures printing services
|
||||||
- scripts: Various preconfigured scripts with the ability to add more
|
|
||||||
- sops: Enables sops-nix
|
|
||||||
- starship : Configures the starship prompt
|
|
||||||
- stylix : Configures system themes, can also be applied to dashvim if used.
|
|
||||||
- teams: For the poor souls that have to use this....
|
|
||||||
- virtualbox : Enables and configures virtualbox
|
- virtualbox : Enables and configures virtualbox
|
||||||
- xkb: Keyboard layout configuration
|
|
||||||
- xone : Installs the xone driver
|
- xone : Installs the xone driver
|
||||||
|
- starship : Configures the starship prompt
|
||||||
|
- keepassxc : Configures keepassxc
|
||||||
|
- gaming : Configures gaming related features (launchers, gamemode)
|
||||||
|
- stylix : Configures system themes, can also be applied to dashvim if used.
|
||||||
|
- git : Git key and config module
|
||||||
|
- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud)
|
||||||
|
- firefox: Enables and configures firefox (extensions and settings)
|
||||||
|
- Hyprland: Installs and configures Hyprland with various additional packages
|
||||||
- yazi: Installs yazi and sets custom keybinds
|
- yazi: Installs yazi and sets custom keybinds
|
||||||
|
- teams: For the poor souls that have to use this....
|
||||||
# Credits
|
- sops: Enables sops-nix
|
||||||
|
- fish: Enables and configures fish shell
|
||||||
- [Fufexan](https://github.com/fufexan) for the xdg-mime config:
|
- kitty: Enables and configures kitty terminal
|
||||||
- [Catppuccin](https://github.com/catppuccin) for base16 colors and zen-browser css
|
- oxi: My own programs, can be selectively disabled, or as a whole
|
||||||
- [Danth](https://github.com/danth) for providing a base for the nix docs
|
- scripts: Various preconfigured scripts with the ability to add more
|
||||||
- [chermnyx](https://github.com/chermnyx) for providing a base for zen configuration
|
|
||||||
- [voronind-com](https://github.com/voronind-com) for providing the darkreader configuration
|
|
||||||
- [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson))
|
|
||||||
- [xddxdd](https://github.com/xddxdd) for the CachyOS-Kernel flake
|
|
||||||
|
|
|
||||||
|
|
@ -1,238 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="38.753597mm"
|
|
||||||
height="65.022255mm"
|
|
||||||
viewBox="0 0 38.753597 65.022256"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
xml:space="preserve"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
|
|
||||||
id="title39">DashNix</title><defs
|
|
||||||
id="defs1"><linearGradient
|
|
||||||
id="linearGradient106"><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop106" /><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0.23456791"
|
|
||||||
id="stop109" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.4526749"
|
|
||||||
id="stop108" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.59362137"
|
|
||||||
id="stop110" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="0.66358024"
|
|
||||||
id="stop111" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop107" /></linearGradient><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient107"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="pad" /></defs><g
|
|
||||||
id="layer1"
|
|
||||||
transform="matrix(0.45379,0,0,0.45379,-29.020506,-23.643099)"><g
|
|
||||||
id="g82"
|
|
||||||
transform="matrix(0.16779066,0,0,0.16779066,64.401373,52.777012)"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1"><g
|
|
||||||
id="layer3-7"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-141.35649,1425.3526)"><g
|
|
||||||
id="g113"><g
|
|
||||||
id="layer1-8"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
id="path4861" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1"
|
|
||||||
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
|
|
||||||
id="use4863" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
|
|
||||||
id="use4865" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
|
|
||||||
id="use4867" /><path
|
|
||||||
id="path4873"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4875"
|
|
||||||
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4877"
|
|
||||||
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><g
|
|
||||||
id="layer2"
|
|
||||||
style="display:none;fill:#f7f5f6;fill-opacity:1"
|
|
||||||
transform="translate(72.039038,-1799.4476)"><path
|
|
||||||
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
|
|
||||||
id="path6032"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
|
||||||
id="path5875"
|
|
||||||
d="M 385.59154,773.06721 H 284.75659 l -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
id="path5851"
|
|
||||||
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect5884"
|
|
||||||
width="48.834862"
|
|
||||||
height="226.22897"
|
|
||||||
x="-34.74221"
|
|
||||||
y="446.17056"
|
|
||||||
transform="rotate(-30)" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="path3428"
|
|
||||||
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /><use
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
xlink:href="#rect5884"
|
|
||||||
id="use4252"
|
|
||||||
transform="rotate(60,268.29786,489.4515)"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect4254"
|
|
||||||
width="5.3947482"
|
|
||||||
height="115.12564"
|
|
||||||
x="545.71014"
|
|
||||||
y="467.07007"
|
|
||||||
transform="rotate(30,575.23539,-154.13386)" /></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.362108"
|
|
||||||
d="m 17.647006,93.08153 c -2.137791,-3.629135 -3.886892,-6.781154 -3.886892,-7.004491 0,-0.223334 2.036859,-3.907974 4.526353,-8.18809 2.489494,-4.280113 4.526353,-7.872269 4.526353,-7.982568 0,-0.110298 -4.202399,-0.200542 -9.338664,-0.200542 H 4.1354931 L 2.2488007,66.408408 C 1.2111198,64.594822 0.36210825,62.964051 0.36210825,62.784474 c 0,-0.179578 0.83310065,-1.791759 1.85133475,-3.582627 l 1.8513347,-3.256122 13.4477393,-0.0031 13.447739,-0.0031 4.75902,-8.234844 4.75902,-8.234843 8.039166,-0.09755 8.039169,-0.09754 -0.718362,1.18387 C 55.443173,41.109708 47.744447,54.433923 38.729994,70.067947 29.715538,85.701971 22.158685,98.760409 21.936986,99.086701 21.60128,99.580783 20.884148,98.576936 17.647006,93.08153 Z"
|
|
||||||
id="path27"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path28"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path29"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path30"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path31"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path32"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path33"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path34"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path35"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /></g><g
|
|
||||||
id="layer3"
|
|
||||||
style="display:inline;opacity:1;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(60,407.11155,-715.78724)"
|
|
||||||
id="use3439-6"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-60,407.31177,-715.70016)"
|
|
||||||
id="use3445-0"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(180,407.41868,-715.7565)"
|
|
||||||
id="use3449-5"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
id="path4260-0" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(120,407.33916,-716.08356)"
|
|
||||||
id="use4354-5"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-120,407.28823,-715.86995)"
|
|
||||||
id="use4362-2"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
|
||||||
id="g104"
|
|
||||||
style="fill:url(#linearGradient107);stroke:none"
|
|
||||||
transform="rotate(-13.062247,340.02897,-863.93232)"><path
|
|
||||||
id="use3449-5-0-0"
|
|
||||||
d="m 331.77633,-1001.5212 94.91305,225.23301 -55.78631,-6.46377 -25.29508,-60.48604 -39.63845,52.03815 -27.6842,-3.48227 -11.10824,-26.27568 56.46054,-74.04107 -25.77721,-61.5105 z"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-6"
|
|
||||||
d="m 457.16967,-744.75745 -70.00051,-234.1759 54.76023,12.45846 18.60597,62.86668 45.03324,-47.44663 27.14534,6.4555 8.2017,27.32283 -64.13603,67.50143 18.97452,63.93729 z"
|
|
||||||
style="fill:#ff0d01;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-4"
|
|
||||||
d="m 277.21377,-582.32585 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z"
|
|
||||||
style="fill:#f8f641;fill-opacity:1" /></g></g></g></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path36"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 21.228346,98.82575 C 20.775825,98.187139 14.573556,87.698587 14.099569,86.770393 l -0.346608,-0.67875 1.796437,-3.213914 c 0.988041,-1.767653 3.067246,-5.409743 4.620457,-8.093538 1.553211,-2.683792 2.824019,-4.931476 2.824019,-4.99485 0,-0.110336 -11.090545,-0.351953 -16.3853984,-0.356972 L 4.0737178,69.429968 2.217913,66.175832 C 1.1972204,64.386056 0.36210825,62.847854 0.36210825,62.757606 c 0,-0.09025 0.87964515,-1.70058 1.95476695,-3.578513 l 1.954767,-3.414422 13.3895698,0.06926 13.389571,0.06926 4.821268,-8.307221 4.821271,-8.307221 3.145111,-0.04488 c 1.729813,-0.02469 5.235571,0.01605 7.790576,0.09053 l 4.645463,0.135412 -3.534135,6.15584 c -4.146422,7.222338 -16.886029,29.318862 -25.000346,43.362463 -3.135747,5.427098 -5.801825,9.976251 -5.924618,10.109228 -0.183451,0.198671 -0.288115,0.150249 -0.587027,-0.271581 z"
|
|
||||||
id="path37"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 97.636535,120.63066 c -1.389583,-2.41665 -4.382703,-7.63252 -6.651376,-11.59081 l -4.12486,-7.1969 -4.45825,-0.005 c -4.928423,-0.005 -14.743895,-0.1852 -14.838725,-0.27196 -0.03322,-0.0304 -1.827632,-3.096939 -3.987593,-6.814561 l -3.9272,-6.759314 17.535793,-0.04616 c 9.644687,-0.02539 25.387006,-0.02539 34.982936,0 l 17.44715,0.04616 -1.54239,2.715812 c -0.84832,1.493697 -2.61343,4.622573 -3.92248,6.953058 l -2.38008,4.237245 -9.38708,-0.11294 c -7.6636,-0.0922 -9.37652,-0.0697 -9.32957,0.12287 0.0316,0.1297 2.12168,3.83356 4.64454,8.23081 l 4.58703,7.995 -1.97119,3.3966 -1.9712,3.39659 -4.08947,0.0486 -4.08947,0.0486 z"
|
|
||||||
id="path38"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 87.802229,39.150266 C 80.890113,27.177278 73.023088,13.551901 70.319951,8.8716522 L 65.405158,0.36210825 68.59656,0.24891517 c 1.755271,-0.0622562 5.350472,-0.12261799 7.989335,-0.1341373 l 4.797935,-0.0209442 4.519855,7.89261083 c 2.48592,4.3409365 4.610279,8.0162745 4.7208,8.1674195 0.162204,0.22183 1.117147,-1.300038 4.953498,-7.8942647 l 4.752557,-8.16907224 h 3.92896 3.92895 l 2.03256,3.50763344 c 1.1179,1.9291986 2.03255,3.5544662 2.03255,3.6117061 0,0.05724 -3.01666,5.2908554 -6.70369,11.6302564 l -6.703688,11.526185 4.779848,8.329337 4.77986,8.329337 -3.94792,6.877008 c -2.17135,3.782353 -3.97949,6.908583 -4.01808,6.947175 -0.0386,0.03859 -5.725543,-9.725911 -12.637661,-21.698899 z"
|
|
||||||
id="path39"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /></g><metadata
|
|
||||||
id="metadata39"><rdf:RDF><cc:Work
|
|
||||||
rdf:about=""><cc:license
|
|
||||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /><dc:title>DashNix</dc:title></cc:Work><cc:License
|
|
||||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>
|
|
||||||
|
Before Width: | Height: | Size: 26 KiB |
|
|
@ -2,19 +2,29 @@
|
||||||
description = "some dots";
|
description = "some dots";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
dashvim.url = "github:DashieTM/DashVim";
|
||||||
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
|
ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
|
||||||
|
anyrun.url = "github:Kirottu/anyrun";
|
||||||
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
|
||||||
stable.url = "github:NixOs/nixpkgs/nixos-24.05";
|
stable.url = "github:NixOs/nixpkgs/nixos-24.05";
|
||||||
dashNix = {
|
dashNix = {
|
||||||
url = "github:Xetibo/DashNix";
|
url = "github:DashieTM/DashNix";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
stable.follows = "stable";
|
stable.follows = "stable";
|
||||||
|
dashvim.follows = "dashvim";
|
||||||
|
hyprland.follows = "hyprland";
|
||||||
|
ironbar.follows = "ironbar";
|
||||||
|
anyrun.follows = "anyrun";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs: {
|
outputs =
|
||||||
nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems {root = ./.;};
|
{ ... }@inputs:
|
||||||
|
{
|
||||||
|
nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.);
|
||||||
};
|
};
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
|
|
@ -24,28 +34,12 @@
|
||||||
"https://hyprland.cachix.org"
|
"https://hyprland.cachix.org"
|
||||||
"https://anyrun.cachix.org"
|
"https://anyrun.cachix.org"
|
||||||
"https://cache.garnix.io"
|
"https://cache.garnix.io"
|
||||||
"https://oxipaste.cachix.org"
|
|
||||||
"https://oxinoti.cachix.org"
|
|
||||||
"https://oxishut.cachix.org"
|
|
||||||
"https://oxidash.cachix.org"
|
|
||||||
"https://oxicalc.cachix.org"
|
|
||||||
"https://hyprdock.cachix.org"
|
|
||||||
"https://reset.cachix.org"
|
|
||||||
"https://dashvim.cachix.org"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
extra-trusted-public-keys = [
|
extra-trusted-public-keys = [
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
||||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||||
"oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc="
|
|
||||||
"oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc="
|
|
||||||
"oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU="
|
|
||||||
"oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30="
|
|
||||||
"oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ="
|
|
||||||
"hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y="
|
|
||||||
"reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo="
|
|
||||||
"dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0="
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,68 +1,67 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
# TODO denote important changes
|
{
|
||||||
|
|
||||||
# variables for system
|
# variables for system
|
||||||
|
# TODO important changes
|
||||||
conf = {
|
conf = {
|
||||||
# TODO your username
|
# change this to your monitor and your pc name
|
||||||
username = "exampleName";
|
# should be something like DP-1
|
||||||
|
monitor = "YOURMONITOR";
|
||||||
|
# your username
|
||||||
|
username = "YOURNAME";
|
||||||
# TODO only needed when you use intel -> amd is default
|
# TODO only needed when you use intel -> amd is default
|
||||||
# cpu = "intel";
|
# cpu = "intel";
|
||||||
# TODO your xkb layout
|
locale = "something.UTF-8";
|
||||||
locale = "en_US.UTF-8";
|
timezone = "CONTINENT/CITY";
|
||||||
# TODO your timezone
|
|
||||||
timezone = "Europe/Zurich";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# modules
|
# modules
|
||||||
mods = {
|
mods = {
|
||||||
# default disk config has root home boot and swap partition, overwrite if you want something different
|
# default disk config has root home boot and swap partition, overwrite if you want something different
|
||||||
|
drives = {
|
||||||
|
defaultDrives.enable = false;
|
||||||
|
extraDrives = [
|
||||||
|
{
|
||||||
|
name = "boot";
|
||||||
|
drive = {
|
||||||
|
device = "/dev/disk/by-label/BOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"rw"
|
||||||
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "";
|
||||||
|
drive = {
|
||||||
|
device = "/dev/disk/by-label/ROOT";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [
|
||||||
|
"noatime"
|
||||||
|
"nodiratime"
|
||||||
|
"discard"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
sops.enable = false;
|
sops.enable = false;
|
||||||
nextcloud.enable = false;
|
nextcloud.enable = false;
|
||||||
wm.monitors = [
|
hyprland.monitor = [
|
||||||
# Example
|
# default
|
||||||
# {
|
# TODO change this to your resolution
|
||||||
# name = "DP-1";
|
"${config.conf.monitor},1920x1080@144,0x0,1"
|
||||||
# resolutionX = 3440;
|
# all others
|
||||||
# resolutionY = 1440;
|
",highrr,auto,1"
|
||||||
# refreshrate = 180;
|
|
||||||
# positionX = 2560;
|
|
||||||
# positionY = 0;
|
|
||||||
# scale = 1;
|
|
||||||
# transform = "0";
|
|
||||||
# vrr = false;
|
|
||||||
# }
|
|
||||||
];
|
];
|
||||||
|
# or amd, whatever you have
|
||||||
gpu.nvidia.enable = true;
|
gpu.nvidia.enable = true;
|
||||||
kdeConnect.enable = true;
|
kde_connect.enable = true;
|
||||||
# login manager:
|
# TODO change this to your main resolution
|
||||||
# default is greetd
|
# -> this will be your login manager
|
||||||
# greetd = { };
|
greetd = {
|
||||||
# sddm = { };
|
resolution = "3440x1440@180";
|
||||||
# gdm = { };
|
|
||||||
drives = {
|
|
||||||
# default assumes ROOT, BOOT, HOME and SWAP labaled drives exist
|
|
||||||
# for an example without HOME see below
|
|
||||||
# defaultDrives.enable = false;
|
|
||||||
# extraDrives = [
|
|
||||||
# {
|
|
||||||
# name = "boot";
|
|
||||||
# drive = {
|
|
||||||
# device = "/dev/disk/by-label/BOOT";
|
|
||||||
# fsType = "vfat";
|
|
||||||
# options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ];
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "";
|
|
||||||
# drive = {
|
|
||||||
# device = "/dev/disk/by-label/ROOT";
|
|
||||||
# fsType = "ext4";
|
|
||||||
# options = [ "noatime" "nodiratime" "discard" ];
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# You can also use disko to format your disks on installation.
|
|
||||||
# Please refer to the Documentation about the drives module for an example.
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2132
flake.lock
generated
Normal file
140
flake.nix
|
|
@ -2,112 +2,100 @@
|
||||||
description = "DashNix";
|
description = "DashNix";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
unstable.url = "github:NixOs/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
|
||||||
stable.url = "github:NixOs/nixpkgs/nixos-25.05";
|
stable.url = "github:NixOs/nixpkgs/nixos-24.05";
|
||||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
|
||||||
nur.url = "github:nix-community/NUR";
|
nix-flatpak = {
|
||||||
lanzaboote = {
|
url = "github:gmodena/nix-flatpak";
|
||||||
url = "github:nix-community/lanzaboote/v0.4.2";
|
|
||||||
inputs.nixpkgs.follows = "unstable";
|
|
||||||
};
|
};
|
||||||
statix.url = "github:oppiliappan/statix?ref=master";
|
|
||||||
# Darkreader requires es20, hence a stable pin
|
|
||||||
pkgsDarkreader.url = "github:NixOs/nixpkgs/nixos-24.11";
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "unstable";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
cachy.url = "github:xddxdd/nix-cachyos-kernel?rev=bb7b8aa687464f24dcd452354d9621331d6b0737";
|
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
# Hyprspace = {
|
||||||
|
# url = "github:KZDKM/Hyprspace";
|
||||||
|
# inputs.hyprland.follows = "nixpkgs";
|
||||||
|
# };
|
||||||
|
|
||||||
|
nur.url = "github:nix-community/nur";
|
||||||
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
|
|
||||||
ironbar = {
|
ironbar = {
|
||||||
url = "github:JakeStanger/ironbar";
|
url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
|
||||||
inputs.nixpkgs.follows = "unstable";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
zen-browser.url = "github:youwen5/zen-browser-flake";
|
|
||||||
|
|
||||||
stylix.url = "github:danth/stylix";
|
stylix.url = "github:danth/stylix";
|
||||||
base16.url = "github:SenchoPens/base16.nix";
|
base16.url = "github:SenchoPens/base16.nix";
|
||||||
disko.url = "github:nix-community/disko/latest";
|
|
||||||
|
|
||||||
anyrun.url = "github:Kirottu/anyrun";
|
anyrun.url = "github:Kirottu/anyrun";
|
||||||
oxicalc.url = "github:Xetibo/OxiCalc";
|
oxicalc.url = "github:DashieTM/OxiCalc";
|
||||||
oxishut.url = "github:Xetibo/OxiShut";
|
oxishut.url = "github:DashieTM/OxiShut";
|
||||||
oxinoti.url = "github:Xetibo/OxiNoti";
|
oxinoti.url = "github:DashieTM/OxiNoti";
|
||||||
oxidash.url = "github:Xetibo/OxiDash";
|
oxidash.url = "github:DashieTM/OxiDash";
|
||||||
oxipaste.url = "github:Xetibo/OxiPaste";
|
oxipaste.url = "github:DashieTM/OxiPaste";
|
||||||
oxirun.url = "github:Xetibo/OxiRun";
|
hyprdock.url = "github:DashieTM/hyprdock";
|
||||||
dashvim.url = "github:Xetibo/DashVim";
|
|
||||||
|
|
||||||
hyprdock.url = "github:Xetibo/hyprdock";
|
|
||||||
reset.url = "github:Xetibo/ReSet";
|
reset.url = "github:Xetibo/ReSet";
|
||||||
reset-plugins.url = "github:Xetibo/ReSet-Plugins";
|
reset-plugins.url = "github:Xetibo/ReSet-Plugins";
|
||||||
|
|
||||||
superfreq.url = "github:NotAShelf/superfreq";
|
dashvim = {
|
||||||
|
url = "github:DashieTM/DashVim";
|
||||||
compose.url = "github:garnix-io/nixos-compose";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.base16.follows = "base16";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {self, ...} @ inputs: let
|
outputs =
|
||||||
currentSystem = "x86_64-linux";
|
{ self, ... }@inputs:
|
||||||
permittedPackages = [
|
let
|
||||||
"olm-3.2.16"
|
stable = import inputs.stable {
|
||||||
];
|
system = "x86_64-linux";
|
||||||
importPkgsFn = import ./lib/importPkgs.nix;
|
config = {
|
||||||
defaultConfigureFn = pkgs:
|
allowUnfree = true;
|
||||||
importPkgsFn {
|
|
||||||
inherit inputs currentSystem permittedPackages pkgs;
|
|
||||||
};
|
};
|
||||||
stable = defaultConfigureFn inputs.stable;
|
};
|
||||||
unstable = defaultConfigureFn inputs.unstable;
|
pkgs = import inputs.nixpkgs {
|
||||||
pkgsDarkreader = defaultConfigureFn inputs.pkgsDarkreader;
|
system = "x86_64-linux";
|
||||||
in rec {
|
overlays = [ inputs.nur.overlay ];
|
||||||
|
config = {
|
||||||
|
permittedInsecurePackages = [ "olm-3.2.16" ];
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rec {
|
||||||
dashNixLib = import ./lib {
|
dashNixLib = import ./lib {
|
||||||
inherit
|
inherit self inputs pkgs;
|
||||||
self
|
lib = inputs.nixpkgs.lib;
|
||||||
inputs
|
|
||||||
unstable
|
|
||||||
permittedPackages
|
|
||||||
;
|
|
||||||
dashNixAdditionalProps = {
|
|
||||||
inherit pkgsDarkreader;
|
|
||||||
};
|
|
||||||
system = currentSystem;
|
|
||||||
};
|
};
|
||||||
docs = import ./docs {
|
docs = import ./docs {
|
||||||
inherit inputs;
|
inherit inputs pkgs;
|
||||||
pkgs = unstable;
|
lib = inputs.nixpkgs.lib;
|
||||||
system = currentSystem;
|
build_systems = dashNixLib.build_systems;
|
||||||
inherit (inputs.unstable) lib;
|
|
||||||
inherit (dashNixLib) buildSystems;
|
|
||||||
};
|
};
|
||||||
lint = inputs.statix.packages.${currentSystem}.default;
|
|
||||||
format = unstable.alejandra;
|
|
||||||
dashNixInputs = inputs;
|
dashNixInputs = inputs;
|
||||||
stablePkgs = stable;
|
stablePkgs = stable;
|
||||||
unstablePkgs = unstable;
|
unstablePkgs = pkgs;
|
||||||
modules = ./modules;
|
modules = ./modules;
|
||||||
iso = dashNixLib.buildIso.config.system.build.isoImage;
|
iso = dashNixLib.buildIso.config.system.build.isoImage;
|
||||||
nixosConfigurations = dashNixLib.buildSystems {root = ./example/.;};
|
|
||||||
|
|
||||||
mkFlake = stablePkgs.writeShellApplication {
|
|
||||||
name = "Create example config";
|
|
||||||
text =
|
|
||||||
/*
|
|
||||||
bash
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
mkdir -p ~/gits/nixos
|
|
||||||
mkdir -p ~/gits/backup_nixos
|
|
||||||
|
|
||||||
mv ~/gits/nixos/* ~/gits/backup_nixos/
|
|
||||||
cp -r ${./example}/* ~/gits/nixos/
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixConfig = {
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
|
||||||
|
extra-substituters = [
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
"https://anyrun.cachix.org"
|
||||||
|
"https://cache.garnix.io"
|
||||||
|
];
|
||||||
|
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
||||||
|
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,46 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
options,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
username = config.conf.username;
|
username = config.conf.username;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
manual = {
|
manual = {
|
||||||
html.enable = mkDashDefault false;
|
html.enable = false;
|
||||||
json.enable = mkDashDefault false;
|
json.enable = false;
|
||||||
manpages.enable = mkDashDefault false;
|
manpages.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fontconfig.enable = mkDashDefault true;
|
fonts.fontconfig.enable = true;
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
username = mkDashDefault username;
|
username = username;
|
||||||
homeDirectory = mkDashDefault "/home/${username}";
|
homeDirectory = "/home/${username}";
|
||||||
sessionPath = ["$HOME/.cargo/bin"];
|
sessionPath = [ "$HOME/.cargo/bin" ];
|
||||||
|
|
||||||
enableNixpkgsReleaseCheck = mkDashDefault false;
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
GOROOT = mkDashDefault "$HOME/.go";
|
GOROOT = "$HOME/.go";
|
||||||
QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
keyboard = mkDashDefault null;
|
keyboard = null;
|
||||||
|
|
||||||
|
file.".local/share/flatpak/overrides/global".text = ''
|
||||||
|
[Context]
|
||||||
|
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.nix-index = {
|
programs.nix-index = {
|
||||||
enable = mkDashDefault true;
|
enable = true;
|
||||||
enableFishIntegration = mkDashDefault true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) ''
|
extraOptions = lib.mkIf (options ? config.sops.secrets.access.path) ''
|
||||||
!include ${config.sops.secrets.access.path}
|
!include ${config.sops.secrets.access.path}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,66 +1,42 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
dashNixAdditionalProps,
|
|
||||||
config,
|
|
||||||
homeMods,
|
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
|
||||||
additionalHomeConfig,
|
|
||||||
mod,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
mod,
|
||||||
|
additionalHomeConfig,
|
||||||
|
homeMods,
|
||||||
|
additionalHomeMods,
|
||||||
root,
|
root,
|
||||||
alternativePkgs,
|
|
||||||
system,
|
|
||||||
stable,
|
|
||||||
unstable,
|
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
xdg = {
|
xdg = {
|
||||||
portal.config.common = {
|
portal.config.common.default = "*";
|
||||||
default = mkDashDefault "hyprland;gtk";
|
|
||||||
"org.freedesktop.impl.portal.FileChooser" = lib.mkIf (config.mods.media.filePickerPortal != "Default") "shana";
|
|
||||||
};
|
|
||||||
portal = {
|
portal = {
|
||||||
enable = mkDashDefault true;
|
enable = true;
|
||||||
extraPortals = with pkgs; [
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
xdg-desktop-portal-gtk # prob needed either way
|
|
||||||
(lib.mkIf (config.mods.media.filePickerPortal != "Default") xdg-desktop-portal-shana)
|
|
||||||
(lib.mkIf (config.mods.media.filePickerPortal == "Kde") kdePackages.xdg-desktop-portal-kde)
|
|
||||||
# Gnome uses their file manager, kinda cool tbh
|
|
||||||
(lib.mkIf (config.mods.media.filePickerPortal == "Gnome" && !config.mods.nautilus.enable) nautilus)
|
|
||||||
(lib.mkIf (config.mods.media.filePickerPortal == "Lxqt") xdg-desktop-portal-lxqt)
|
|
||||||
(lib.mkIf (config.mods.media.filePickerPortal == "Term") xdg-desktop-portal-termfilechooser)
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = mkDashDefault true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = mkDashDefault true;
|
useUserPackages = true;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit
|
inherit inputs root;
|
||||||
inputs
|
|
||||||
root
|
|
||||||
alternativePkgs
|
|
||||||
system
|
|
||||||
stable
|
|
||||||
unstable
|
|
||||||
dashNixAdditionalProps
|
|
||||||
;
|
|
||||||
mkDashDefault = import ../lib/override.nix {inherit lib;};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
users.${config.conf.username} = {
|
users.${config.conf.username} = {
|
||||||
disabledModules = ["programs/anyrun.nix"];
|
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
./common.nix
|
./common.nix
|
||||||
|
./xdg.nix
|
||||||
./themes
|
./themes
|
||||||
./sync.nix
|
./sync.nix
|
||||||
../lib/foxwrappers.nix
|
|
||||||
]
|
]
|
||||||
++ homeMods
|
++ homeMods
|
||||||
++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig
|
++ additionalHomeMods
|
||||||
++ lib.optional (builtins.pathExists mod) mod;
|
++ lib.optional (builtins.pathExists mod) mod
|
||||||
|
++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,18 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
username = config.mods.nextcloud.username;
|
username = config.mods.nextcloud.username;
|
||||||
password =
|
password =
|
||||||
if (config.sops.secrets ? nextcloud.path)
|
if (config.sops.secrets ? nextcloud.path) then config.sops.secrets.nextcloud.path else "";
|
||||||
then config.sops.secrets.nextcloud.path
|
|
||||||
else "";
|
|
||||||
url = config.mods.nextcloud.url;
|
url = config.mods.nextcloud.url;
|
||||||
synclist = config.mods.nextcloud.synclist;
|
synclist = config.mods.nextcloud.synclist;
|
||||||
in
|
in
|
||||||
lib.mkIf config.mods.nextcloud.enable {
|
lib.mkIf config.mods.nextcloud.enable {
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
services = builtins.listToAttrs (
|
services = (
|
||||||
|
builtins.listToAttrs (
|
||||||
map (opts: {
|
map (opts: {
|
||||||
name = "${opts.name}";
|
name = "${opts.name}";
|
||||||
value = {
|
value = {
|
||||||
|
|
@ -30,12 +30,13 @@ in
|
||||||
KillMode = "process";
|
KillMode = "process";
|
||||||
KillSignal = "SIGINT";
|
KillSignal = "SIGINT";
|
||||||
};
|
};
|
||||||
Install.WantedBy = ["multi-user.target"];
|
Install.WantedBy = [ "multi-user.target" ];
|
||||||
};
|
};
|
||||||
})
|
}) synclist
|
||||||
synclist
|
)
|
||||||
);
|
);
|
||||||
timers = builtins.listToAttrs (
|
timers = (
|
||||||
|
builtins.listToAttrs (
|
||||||
map (opts: {
|
map (opts: {
|
||||||
name = "${opts.name}";
|
name = "${opts.name}";
|
||||||
value = {
|
value = {
|
||||||
|
|
@ -47,9 +48,9 @@ in
|
||||||
"timers.target"
|
"timers.target"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
})
|
}) synclist
|
||||||
synclist
|
)
|
||||||
);
|
);
|
||||||
startServices = true;
|
startServices = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,115 @@
|
||||||
{
|
{
|
||||||
imports = [
|
config,
|
||||||
./qt.nix
|
inputs,
|
||||||
./kdeglobals.nix
|
pkgs,
|
||||||
./oxiced.nix
|
...
|
||||||
./firefoxTheme.nix
|
}:
|
||||||
];
|
let
|
||||||
|
username = config.conf.username;
|
||||||
|
# at time of using this here, stylix might not be evaluated yet
|
||||||
|
# hence ensure it is by using base16 mkSchemeAttrs
|
||||||
|
base16 = pkgs.callPackage inputs.base16.lib { };
|
||||||
|
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
|
||||||
|
# active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5
|
||||||
|
# disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
||||||
|
# inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
||||||
|
color = ''
|
||||||
|
[ColorScheme]
|
||||||
|
active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||||
|
disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||||
|
inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||||
|
'';
|
||||||
|
qss = ''
|
||||||
|
QTabBar::tab:selected {
|
||||||
|
color: palette(highlight);
|
||||||
|
}
|
||||||
|
QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
xdg.configFile."qt5ct/colors/tokyonight.conf" = {
|
||||||
|
text = "${color}";
|
||||||
|
};
|
||||||
|
xdg.configFile."qt6ct/colors/tokyonight.conf" = {
|
||||||
|
text = "${color}";
|
||||||
|
};
|
||||||
|
xdg.configFile."qt5ct/qss/tab.qss" = {
|
||||||
|
text = "${qss}";
|
||||||
|
};
|
||||||
|
xdg.configFile."qt5ct/qt5ct.conf" = {
|
||||||
|
text = ''
|
||||||
|
[Appearance]
|
||||||
|
color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf
|
||||||
|
custom_palette=true
|
||||||
|
icon_theme=MoreWaita
|
||||||
|
standard_dialogs=gtk3
|
||||||
|
style=Breeze
|
||||||
|
|
||||||
|
[Fonts]
|
||||||
|
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||||
|
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||||
|
|
||||||
|
[Interface]
|
||||||
|
activate_item_on_single_click=2
|
||||||
|
buttonbox_layout=3
|
||||||
|
cursor_flash_time=1000
|
||||||
|
dialog_buttons_have_icons=0
|
||||||
|
double_click_interval=400
|
||||||
|
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||||
|
keyboard_scheme=4
|
||||||
|
menus_have_icons=true
|
||||||
|
show_shortcuts_in_context_menus=true
|
||||||
|
stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss
|
||||||
|
toolbutton_style=4
|
||||||
|
underline_shortcut=0
|
||||||
|
wheel_scroll_lines=3
|
||||||
|
|
||||||
|
[SettingsWindow]
|
||||||
|
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q)
|
||||||
|
|
||||||
|
[Troubleshooting]
|
||||||
|
force_raster_widgets=1
|
||||||
|
ignored_applications=@Invalid()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
xdg.configFile."qt6ct/qt6ct.conf" = {
|
||||||
|
text = ''
|
||||||
|
[Appearance]
|
||||||
|
color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf
|
||||||
|
custom_palette=true
|
||||||
|
standard_dialogs=default
|
||||||
|
style=Adwaita-Dark
|
||||||
|
|
||||||
|
[Fonts]
|
||||||
|
fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||||
|
general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||||
|
|
||||||
|
[Interface]
|
||||||
|
activate_item_on_single_click=2
|
||||||
|
buttonbox_layout=3
|
||||||
|
cursor_flash_time=1000
|
||||||
|
dialog_buttons_have_icons=0
|
||||||
|
double_click_interval=400
|
||||||
|
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||||
|
keyboard_scheme=4
|
||||||
|
menus_have_icons=true
|
||||||
|
show_shortcuts_in_context_menus=true
|
||||||
|
stylesheets=@Invalid()
|
||||||
|
toolbutton_style=4
|
||||||
|
underline_shortcut=1
|
||||||
|
wheel_scroll_lines=3
|
||||||
|
|
||||||
|
[PaletteEditor]
|
||||||
|
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4)
|
||||||
|
|
||||||
|
[SettingsWindow]
|
||||||
|
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)"
|
||||||
|
|
||||||
|
[Troubleshooting]
|
||||||
|
force_raster_widgets=1
|
||||||
|
ignored_applications=@Invalid()
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,327 +0,0 @@
|
||||||
# css from https://github.com/catppuccin/zen-browser/tree/main/themes
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
userChrome =
|
|
||||||
/*
|
|
||||||
css
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
/* Catppuccin Mocha Blue userContent.css*/
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
|
|
||||||
/* Common variables affecting all pages */
|
|
||||||
@-moz-document url-prefix("about:") {
|
|
||||||
:root {
|
|
||||||
--in-content-page-color: #${scheme.base05} !important;
|
|
||||||
--color-accent-primary: #${scheme.base0D} !important;
|
|
||||||
--color-accent-primary-hover: rgb(163, 197, 251) !important; // TODO
|
|
||||||
--color-accent-primary-active: rgb(138, 153, 250) !important; // TODO
|
|
||||||
background-color: #${scheme.base00} !important;
|
|
||||||
--in-content-page-background: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Variables and styles specific to about:newtab and about:home */
|
|
||||||
@-moz-document url("about:newtab"), url("about:home") {
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--newtab-background-color: #${scheme.base00} !important;
|
|
||||||
--newtab-background-color-secondary: #${scheme.base02} !important;
|
|
||||||
--newtab-element-hover-color: #${scheme.base02} !important;
|
|
||||||
--newtab-text-primary-color: #${scheme.base05} !important;
|
|
||||||
--newtab-wordmark-color: #${scheme.base05} !important;
|
|
||||||
--newtab-primary-action-background: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-wrapper .logo-and-wordmark .logo {
|
|
||||||
//background: url("zen-logo-mocha.svg"), url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") no-repeat center !important; // TODO
|
|
||||||
display: inline-block !important;
|
|
||||||
height: 82px !important;
|
|
||||||
width: 82px !important;
|
|
||||||
background-size: 82px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 609px) {
|
|
||||||
.search-wrapper .logo-and-wordmark .logo {
|
|
||||||
background-size: 64px !important;
|
|
||||||
height: 64px !important;
|
|
||||||
width: 64px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-outer:is(:hover, :focus, .active):not(.placeholder) .card-title {
|
|
||||||
color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top-site-outer .search-topsite {
|
|
||||||
background-color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.compact-cards .card-outer .card-context .card-context-icon.icon-download {
|
|
||||||
fill: #${scheme.base0B} !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Variables and styles specific to about:preferences */
|
|
||||||
@-moz-document url-prefix("about:preferences") {
|
|
||||||
:root {
|
|
||||||
--zen-colors-tertiary: #${scheme.base01} !important;
|
|
||||||
--in-content-text-color: #${scheme.base05} !important;
|
|
||||||
--link-color: #${scheme.base0D} !important;
|
|
||||||
--link-color-hover: rgb(163, 197, 251) !important; // TODO
|
|
||||||
--zen-colors-primary: #${scheme.base02} !important;
|
|
||||||
--in-content-box-background: #${scheme.base02} !important;
|
|
||||||
--zen-primary-color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
groupbox , moz-card{
|
|
||||||
background: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
groupbox menulist {
|
|
||||||
background: #${scheme.base02} !important;
|
|
||||||
color: #${scheme.base05} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main-content {
|
|
||||||
background-color: #${scheme.base01} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-blue {
|
|
||||||
--identity-tab-color: #8aadf4 !important; // TODO
|
|
||||||
--identity-icon-color: #8aadf4 !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-turquoise {
|
|
||||||
--identity-tab-color: #8bd5ca !important; // TODO
|
|
||||||
--identity-icon-color: #8bd5ca !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-green {
|
|
||||||
--identity-tab-color: #${scheme.base0B} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0B} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-yellow {
|
|
||||||
--identity-tab-color: #eed49f !important; // TODO
|
|
||||||
--identity-icon-color: #eed49f !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-orange {
|
|
||||||
--identity-tab-color: #f5a97f !important; // TODO
|
|
||||||
--identity-icon-color: #f5a97f !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-red {
|
|
||||||
--identity-tab-color: #ed8796 !important; // TODO
|
|
||||||
--identity-icon-color: #ed8796 !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-pink {
|
|
||||||
--identity-tab-color: #f5bde6 !important; // TODO
|
|
||||||
--identity-icon-color: #f5bde6 !important; // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-purple {
|
|
||||||
--identity-tab-color: #c6a0f6 !important; // TODO
|
|
||||||
--identity-icon-color: #c6a0f6 !important; // TODO
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Variables and styles specific to about:addons */
|
|
||||||
@-moz-document url-prefix("about:addons") {
|
|
||||||
:root {
|
|
||||||
--zen-dark-color-mix-base: #${scheme.base01} !important;
|
|
||||||
--background-color-box: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Variables and styles specific to about:protections */
|
|
||||||
@-moz-document url-prefix("about:protections") {
|
|
||||||
:root {
|
|
||||||
--zen-primary-color: #${scheme.base00} !important;
|
|
||||||
--social-color: #${scheme.base0E} !important;
|
|
||||||
--coockie-color: #${scheme.base08} !important;
|
|
||||||
--fingerprinter-color: #${scheme.base0A} !important;
|
|
||||||
--cryptominer-color: #${scheme.base07} !important;
|
|
||||||
--tracker-color: #${scheme.base0B} !important;
|
|
||||||
--in-content-primary-button-background-hover: rgb(81, 83, 05) !important;
|
|
||||||
--in-content-primary-button-text-color-hover: #${scheme.base05} !important;
|
|
||||||
--in-content-primary-button-background: #${scheme.base03} !important;
|
|
||||||
--in-content-primary-button-text-color: #${scheme.base05} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: #${scheme.base02} !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
userContent =
|
|
||||||
/*
|
|
||||||
css
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
/* Catppuccin Mocha Blue userChrome.css*/
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--zen-colors-primary: #${scheme.base02} !important;
|
|
||||||
--zen-primary-color: #${scheme.base0D} !important;
|
|
||||||
--zen-colors-secondary: #${scheme.base02} !important;
|
|
||||||
--zen-colors-tertiary: #${scheme.base01} !important;
|
|
||||||
--zen-colors-border: #${scheme.base0D} !important;
|
|
||||||
--toolbarbutton-icon-fill: #${scheme.base0D} !important;
|
|
||||||
--lwt-text-color: #${scheme.base05} !important;
|
|
||||||
--toolbar-field-color: #${scheme.base05} !important;
|
|
||||||
--tab-selected-textcolor: rgb(171, 197, 247) !important; // TODO
|
|
||||||
--toolbar-field-focus-color: #${scheme.base05} !important;
|
|
||||||
--toolbar-color: #${scheme.base05} !important;
|
|
||||||
--newtab-text-primary-color: #${scheme.base05} !important;
|
|
||||||
--arrowpanel-color: #${scheme.base05} !important;
|
|
||||||
--arrowpanel-background: #${scheme.base00} !important;
|
|
||||||
--sidebar-text-color: #${scheme.base05} !important;
|
|
||||||
--lwt-sidebar-text-color: #${scheme.base05} !important;
|
|
||||||
--lwt-sidebar-background-color: #${scheme.base01} !important; //TODO 11111b !important;
|
|
||||||
--toolbar-bgcolor: #${scheme.base02} !important;
|
|
||||||
--newtab-background-color: #${scheme.base00} !important;
|
|
||||||
--zen-themed-toolbar-bg: #${scheme.base01} !important;
|
|
||||||
--zen-main-browser-background: #${scheme.base01} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#permissions-granted-icon{
|
|
||||||
color: #${scheme.base01} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-placesTree {
|
|
||||||
background-color: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-workspaces-button {
|
|
||||||
background-color: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar {
|
|
||||||
background-color: #${scheme.base01} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#urlbar-background {
|
|
||||||
background-color: #${scheme.base00} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-shortcuts {
|
|
||||||
background-color: #${scheme.base00} !important;
|
|
||||||
border-color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.urlbarView-url {
|
|
||||||
color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zenEditBookmarkPanelFaviconContainer {
|
|
||||||
background: #${scheme.base01} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
toolbar .toolbarbutton-1 {
|
|
||||||
&:not([disabled]) {
|
|
||||||
&:is([open], [checked]) > :is(.toolbarbutton-icon, .toolbarbutton-text, .toolbarbutton-badge-stack){
|
|
||||||
fill: #${scheme.base01};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-blue {
|
|
||||||
--identity-tab-color: #${scheme.base0D} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0D} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-turquoise {
|
|
||||||
--identity-tab-color: #${scheme.base0C} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0C} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-green {
|
|
||||||
--identity-tab-color: #${scheme.base0B} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0B} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-yellow {
|
|
||||||
--identity-tab-color: #${scheme.base0A} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0A} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-orange {
|
|
||||||
--identity-tab-color: #${scheme.base09} !important;
|
|
||||||
--identity-icon-color: #${scheme.base09} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-red {
|
|
||||||
--identity-tab-color: #${scheme.base08} !important;
|
|
||||||
--identity-icon-color: #${scheme.base08} !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-pink {
|
|
||||||
--identity-tab-color: #${scheme.base0F} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0F} !important; // TODO f5c2e7
|
|
||||||
}
|
|
||||||
|
|
||||||
.identity-color-purple {
|
|
||||||
--identity-tab-color: #${scheme.base0E} !important;
|
|
||||||
--identity-icon-color: #${scheme.base0E} !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
browsername = config.mods.homePackages.browser;
|
|
||||||
profiles =
|
|
||||||
if config.mods.homePackages.browser == "firefox"
|
|
||||||
then config.mods.browser.firefox.profiles
|
|
||||||
else if config.mods.homePackages.browser == "zen"
|
|
||||||
then config.mods.browser.zen.profiles
|
|
||||||
else if config.mods.homePackages.browser == "librewolf"
|
|
||||||
then [
|
|
||||||
{
|
|
||||||
name = "default";
|
|
||||||
value = {};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
else [];
|
|
||||||
profileNamesFn =
|
|
||||||
builtins.catAttrs "name";
|
|
||||||
chromesFn = builtins.map (
|
|
||||||
name:
|
|
||||||
if (builtins.isString browsername)
|
|
||||||
then {
|
|
||||||
".${browsername}/${name}/chrome/userContent.css" = {
|
|
||||||
text = userChrome;
|
|
||||||
};
|
|
||||||
|
|
||||||
".${browsername}/${name}/chrome/userChrome.css" = {
|
|
||||||
text = userContent;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
);
|
|
||||||
moduleFn = lib.lists.foldr (attr1: attr2: attr1 // attr2) {};
|
|
||||||
mkFirefoxTheme = profiles:
|
|
||||||
profiles
|
|
||||||
|> profileNamesFn
|
|
||||||
|> chromesFn
|
|
||||||
|> moduleFn;
|
|
||||||
in {home.file = mkFirefoxTheme profiles;}
|
|
||||||
|
|
@ -1,252 +0,0 @@
|
||||||
# This is ABSOLUTE GARGABE, KDE srsly, remove this!
|
|
||||||
# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
|
|
||||||
baseScheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
power = number: powerIndex:
|
|
||||||
if powerIndex == 1
|
|
||||||
then number
|
|
||||||
else if powerIndex == 0
|
|
||||||
then 1
|
|
||||||
else number * power number (powerIndex - 1);
|
|
||||||
|
|
||||||
lookupTable = powerIndex: {
|
|
||||||
"0" = 0 * (power 16 powerIndex);
|
|
||||||
"1" = 1 * (power 16 powerIndex);
|
|
||||||
"2" = 2 * (power 16 powerIndex);
|
|
||||||
"3" = 3 * (power 16 powerIndex);
|
|
||||||
"4" = 4 * (power 16 powerIndex);
|
|
||||||
"5" = 5 * (power 16 powerIndex);
|
|
||||||
"6" = 6 * (power 16 powerIndex);
|
|
||||||
"7" = 7 * (power 16 powerIndex);
|
|
||||||
"8" = 8 * (power 16 powerIndex);
|
|
||||||
"9" = 9 * (power 16 powerIndex);
|
|
||||||
"a" = 10 * (power 16 powerIndex);
|
|
||||||
"b" = 11 * (power 16 powerIndex);
|
|
||||||
"c" = 12 * (power 16 powerIndex);
|
|
||||||
"d" = 13 * (power 16 powerIndex);
|
|
||||||
"e" = 14 * (power 16 powerIndex);
|
|
||||||
"f" = 15 * (power 16 powerIndex);
|
|
||||||
};
|
|
||||||
|
|
||||||
convertHex = hexChars:
|
|
||||||
recombineColors [
|
|
||||||
(convertColor (lib.lists.take 2 hexChars))
|
|
||||||
(convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars)))
|
|
||||||
(convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars)))
|
|
||||||
];
|
|
||||||
|
|
||||||
convertColor = color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)};
|
|
||||||
recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors;
|
|
||||||
|
|
||||||
scheme = {
|
|
||||||
base00 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base00)
|
|
||||||
);
|
|
||||||
base01 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base01)
|
|
||||||
);
|
|
||||||
base02 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base02)
|
|
||||||
);
|
|
||||||
base03 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base03)
|
|
||||||
);
|
|
||||||
base04 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base04)
|
|
||||||
);
|
|
||||||
base05 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base05)
|
|
||||||
);
|
|
||||||
base06 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base06)
|
|
||||||
);
|
|
||||||
base07 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base07)
|
|
||||||
);
|
|
||||||
base08 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base08)
|
|
||||||
);
|
|
||||||
base09 = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base09)
|
|
||||||
);
|
|
||||||
base0A = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0A)
|
|
||||||
);
|
|
||||||
base0B = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0B)
|
|
||||||
);
|
|
||||||
base0C = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0C)
|
|
||||||
);
|
|
||||||
base0D = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0D)
|
|
||||||
);
|
|
||||||
base0E = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0E)
|
|
||||||
);
|
|
||||||
base0F = lib.strings.removeSuffix ",end" (
|
|
||||||
convertHex (lib.strings.stringToCharacters baseScheme.base0F)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
# temp
|
|
||||||
# crust -> surface1
|
|
||||||
# subtext0 -> surface2
|
|
||||||
# accentColor -> lavender
|
|
||||||
xdg.configFile."kdeglobals" = {
|
|
||||||
text = ''
|
|
||||||
[ColorEffects:Disabled]
|
|
||||||
Color=${scheme.base01}
|
|
||||||
ColorAmount=0.30000000000000004
|
|
||||||
ColorEffect=2
|
|
||||||
ContrastAmount=0.1
|
|
||||||
ContrastEffect=0
|
|
||||||
IntensityAmount=-1
|
|
||||||
IntensityEffect=0
|
|
||||||
|
|
||||||
[ColorEffects:Inactive]
|
|
||||||
ChangeSelectionColor=true
|
|
||||||
Color=${scheme.base01}
|
|
||||||
ColorAmount=0.5
|
|
||||||
ColorEffect=3
|
|
||||||
ContrastAmount=0
|
|
||||||
ContrastEffect=0
|
|
||||||
Enable=true
|
|
||||||
IntensityAmount=0
|
|
||||||
IntensityEffect=0
|
|
||||||
|
|
||||||
[Colors:Button]
|
|
||||||
BackgroundAlternate=${scheme.base07}
|
|
||||||
BackgroundNormal=${scheme.base02}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:Complementary]
|
|
||||||
BackgroundAlternate=${scheme.base03}
|
|
||||||
BackgroundNormal=${scheme.base00}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:Header]
|
|
||||||
BackgroundAlternate=${scheme.base03}
|
|
||||||
BackgroundNormal=${scheme.base00}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:Selection]
|
|
||||||
BackgroundAlternate=${scheme.base07}
|
|
||||||
BackgroundNormal=${scheme.base07}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundInactive=${scheme.base00}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base03}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:Tooltip]
|
|
||||||
BackgroundAlternate=27,25,35
|
|
||||||
BackgroundNormal=${scheme.base01}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:View]
|
|
||||||
BackgroundAlternate=${scheme.base00}
|
|
||||||
BackgroundNormal=${scheme.base01}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[Colors:Window]
|
|
||||||
BackgroundAlternate=${scheme.base03}
|
|
||||||
BackgroundNormal=${scheme.base00}
|
|
||||||
DecorationFocus=${scheme.base07}
|
|
||||||
DecorationHover=${scheme.base02}
|
|
||||||
ForegroundActive=${scheme.base09}
|
|
||||||
ForegroundInactive=${scheme.base04}
|
|
||||||
ForegroundLink=${scheme.base07}
|
|
||||||
ForegroundNegative=${scheme.base08}
|
|
||||||
ForegroundNeutral=${scheme.base0A}
|
|
||||||
ForegroundNormal=${scheme.base05}
|
|
||||||
ForegroundPositive=${scheme.base0B}
|
|
||||||
ForegroundVisited=${scheme.base0E}
|
|
||||||
|
|
||||||
|
|
||||||
[General]
|
|
||||||
ColorScheme=CustomBase16Nix
|
|
||||||
Name=CustomBase16Nix
|
|
||||||
accentActiveTitlebar=false
|
|
||||||
shadeSortColumn=true
|
|
||||||
|
|
||||||
|
|
||||||
[KDE]
|
|
||||||
contrast=4
|
|
||||||
|
|
||||||
|
|
||||||
[WM]
|
|
||||||
activeBackground=${scheme.base01}
|
|
||||||
activeBlend=${scheme.base05}
|
|
||||||
activeForeground=${scheme.base05}
|
|
||||||
inactiveBackground=${scheme.base03}
|
|
||||||
inactiveBlend=${scheme.base04}
|
|
||||||
inactiveForeground=${scheme.base04}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
valueOrDefault = value: fallback:
|
|
||||||
if (scheme ? oxiced && scheme.oxiced ? ${value})
|
|
||||||
then scheme.oxiced.value
|
|
||||||
else fallback;
|
|
||||||
in {
|
|
||||||
xdg.configFile."oxiced/theme.toml" = {
|
|
||||||
source = (pkgs.formats.toml {}).generate "oxiced" {
|
|
||||||
base = valueOrDefault "base" scheme.base00;
|
|
||||||
mantle = valueOrDefault "mantle" scheme.base01;
|
|
||||||
primary_bg = valueOrDefault "primary_bg" scheme.base02;
|
|
||||||
secondary_bg = valueOrDefault "secondary_bg" scheme.base03;
|
|
||||||
tertiary_bg = valueOrDefault "tertiary_bg" scheme.base04;
|
|
||||||
text = valueOrDefault "text" scheme.base05;
|
|
||||||
|
|
||||||
primary = valueOrDefault "primary" scheme.base0D;
|
|
||||||
primary_contrast = valueOrDefault "primary_contrast" "FFFFFF";
|
|
||||||
secondary = valueOrDefault "primary" scheme.base07;
|
|
||||||
secondary_contrast = valueOrDefault "secondary_contrast" "FFFFFF";
|
|
||||||
|
|
||||||
good = valueOrDefault "good" scheme.base0B;
|
|
||||||
good_contrast = valueOrDefault "good_contrast" "000000";
|
|
||||||
bad = valueOrDefault "bad" scheme.base08;
|
|
||||||
bad_contrast = valueOrDefault "bad_contrast" "FFFFFF";
|
|
||||||
warning = valueOrDefault "warning" scheme.base0A;
|
|
||||||
warning_contrast = valueOrDefault "warning_contrast" "000000";
|
|
||||||
info = valueOrDefault "info" scheme.base0C;
|
|
||||||
info_contrast = valueOrDefault "info_contrast" "FFFFFF";
|
|
||||||
|
|
||||||
rose = valueOrDefault "rose" scheme.base06;
|
|
||||||
lavender = valueOrDefault "lavender" scheme.base07;
|
|
||||||
blue = valueOrDefault "blue" scheme.base0D;
|
|
||||||
mauve = valueOrDefault "mauve" scheme.base0E;
|
|
||||||
flamingo = valueOrDefault "flamingo" scheme.base0F;
|
|
||||||
|
|
||||||
border_color_weak = valueOrDefault "border_color_weak" scheme.base05;
|
|
||||||
border_color_strong = valueOrDefault "border_color_strong" scheme.base0D;
|
|
||||||
|
|
||||||
tint_amount = valueOrDefault "tint_amound" 0.10;
|
|
||||||
shade_amount = valueOrDefault "shade_amount" 0.05;
|
|
||||||
|
|
||||||
border_radius = valueOrDefault "border_radius" 10;
|
|
||||||
|
|
||||||
padding_xs = valueOrDefault "padding_xs" 4.0;
|
|
||||||
padding_sm = valueOrDefault "padding_sm" 8.0;
|
|
||||||
padding_md = valueOrDefault "padding_md" 12.0;
|
|
||||||
padding_lg = valueOrDefault "padding_lg" 16.0;
|
|
||||||
padding_xl = valueOrDefault "padding_xl" 24.0;
|
|
||||||
padding_xxl = valueOrDefault "padding_xxl" 32.0;
|
|
||||||
|
|
||||||
font_sm = valueOrDefault "font_sm" 10.0;
|
|
||||||
font_md = valueOrDefault "font_md" 14.0;
|
|
||||||
font_lg = valueOrDefault "font_lg" 18.0;
|
|
||||||
font_xl = valueOrDefault "font_xl" 24.0;
|
|
||||||
font_xxl = valueOrDefault "font_xxl" 32.0;
|
|
||||||
|
|
||||||
# legacy compatibility
|
|
||||||
name = scheme.scheme;
|
|
||||||
inherit (scheme) base00;
|
|
||||||
inherit (scheme) base01;
|
|
||||||
inherit (scheme) base02;
|
|
||||||
inherit (scheme) base03;
|
|
||||||
inherit (scheme) base04;
|
|
||||||
inherit (scheme) base05;
|
|
||||||
inherit (scheme) base06;
|
|
||||||
inherit (scheme) base07;
|
|
||||||
inherit (scheme) base08;
|
|
||||||
inherit (scheme) base09;
|
|
||||||
base0a = scheme.base0A;
|
|
||||||
base0b = scheme.base0B;
|
|
||||||
base0c = scheme.base0C;
|
|
||||||
base0d = scheme.base0D;
|
|
||||||
base0e = scheme.base0E;
|
|
||||||
base0f = scheme.base0F;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
username = config.conf.username;
|
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
# active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5
|
|
||||||
# disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
|
||||||
# inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
|
||||||
color = ''
|
|
||||||
|
|
||||||
|
|
||||||
[ColorScheme]
|
|
||||||
active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
|
||||||
disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
|
||||||
inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
|
||||||
'';
|
|
||||||
qss = ''
|
|
||||||
|
|
||||||
QTabBar::tab:selected {
|
|
||||||
color: palette(highlight);
|
|
||||||
}
|
|
||||||
QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
stylix.targets.qt = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
style.package = pkgs.kdePackages.breeze;
|
|
||||||
style.name = lib.mkForce "breeze-dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"qt5ct/colors/tokyonight.conf" = {
|
|
||||||
text = "${color}";
|
|
||||||
};
|
|
||||||
"qt6ct/colors/tokyonight.conf" = {
|
|
||||||
text = "${color}";
|
|
||||||
};
|
|
||||||
"qt5ct/qss/tab.qss" = {
|
|
||||||
text = "${qss}";
|
|
||||||
};
|
|
||||||
"qt5ct/qt5ct.conf" = {
|
|
||||||
text = ''
|
|
||||||
|
|
||||||
[Appearance]
|
|
||||||
color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf
|
|
||||||
custom_palette=true
|
|
||||||
icon_theme=MoreWaita
|
|
||||||
standard_dialogs=xdgdesktopportal
|
|
||||||
style=Breeze
|
|
||||||
|
|
||||||
[Fonts]
|
|
||||||
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
|
||||||
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
|
||||||
|
|
||||||
[Interface]
|
|
||||||
activate_item_on_single_click=2
|
|
||||||
buttonbox_layout=3
|
|
||||||
cursor_flash_time=1000
|
|
||||||
dialog_buttons_have_icons=0
|
|
||||||
double_click_interval=400
|
|
||||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
|
||||||
keyboard_scheme=4
|
|
||||||
menus_have_icons=true
|
|
||||||
show_shortcuts_in_context_menus=true
|
|
||||||
stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss
|
|
||||||
toolbutton_style=4
|
|
||||||
underline_shortcut=0
|
|
||||||
wheel_scroll_lines=3
|
|
||||||
|
|
||||||
[SettingsWindow]
|
|
||||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q)
|
|
||||||
|
|
||||||
[Troubleshooting]
|
|
||||||
force_raster_widgets=1
|
|
||||||
ignored_applications=@Invalid()
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"qt6ct/qt6ct.conf" = {
|
|
||||||
text = ''
|
|
||||||
|
|
||||||
[Appearance]
|
|
||||||
color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf
|
|
||||||
custom_palette=true
|
|
||||||
standard_dialogs=xdgdesktopportal
|
|
||||||
style=Breeze
|
|
||||||
|
|
||||||
[Fonts]
|
|
||||||
fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
|
||||||
general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
|
||||||
|
|
||||||
[Interface]
|
|
||||||
activate_item_on_single_click=2
|
|
||||||
buttonbox_layout=3
|
|
||||||
cursor_flash_time=1000
|
|
||||||
dialog_buttons_have_icons=0
|
|
||||||
double_click_interval=400
|
|
||||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
|
||||||
keyboard_scheme=4
|
|
||||||
menus_have_icons=true
|
|
||||||
show_shortcuts_in_context_menus=true
|
|
||||||
stylesheets=@Invalid()
|
|
||||||
toolbutton_style=4
|
|
||||||
underline_shortcut=1
|
|
||||||
wheel_scroll_lines=3
|
|
||||||
|
|
||||||
[Troubleshooting]
|
|
||||||
force_raster_widgets=1
|
|
||||||
ignored_applications=@Invalid()
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
86
home/xdg.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Copyright (c) 2020-2021 Mihai Fufezan
|
||||||
|
# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
browser = [ "firefox" ];
|
||||||
|
imageViewer = [ "imv" ];
|
||||||
|
videoPlayer = [ "mpv" ];
|
||||||
|
audioPlayer = [ "io.bassi.Amberol" ];
|
||||||
|
|
||||||
|
xdgAssociations =
|
||||||
|
type: program: list:
|
||||||
|
builtins.listToAttrs (
|
||||||
|
map (e: {
|
||||||
|
name = "${type}/${e}";
|
||||||
|
value = program;
|
||||||
|
}) list
|
||||||
|
);
|
||||||
|
|
||||||
|
image = xdgAssociations "image" imageViewer [
|
||||||
|
"png"
|
||||||
|
"svg"
|
||||||
|
"jpeg"
|
||||||
|
"gif"
|
||||||
|
];
|
||||||
|
video = xdgAssociations "video" videoPlayer [
|
||||||
|
"mp4"
|
||||||
|
"avi"
|
||||||
|
"mkv"
|
||||||
|
];
|
||||||
|
audio = xdgAssociations "audio" audioPlayer [
|
||||||
|
"mp3"
|
||||||
|
"flac"
|
||||||
|
"wav"
|
||||||
|
"aac"
|
||||||
|
];
|
||||||
|
browserTypes =
|
||||||
|
(xdgAssociations "application" browser [
|
||||||
|
"json"
|
||||||
|
"x-extension-htm"
|
||||||
|
"x-extension-html"
|
||||||
|
"x-extension-shtml"
|
||||||
|
"x-extension-xht"
|
||||||
|
"x-extension-xhtml"
|
||||||
|
])
|
||||||
|
// (xdgAssociations "x-scheme-handler" browser [
|
||||||
|
"about"
|
||||||
|
"ftp"
|
||||||
|
"http"
|
||||||
|
"https"
|
||||||
|
"unknown"
|
||||||
|
]);
|
||||||
|
|
||||||
|
# XDG MIME types
|
||||||
|
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) (
|
||||||
|
{
|
||||||
|
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ];
|
||||||
|
"text/html" = browser;
|
||||||
|
"text/plain" = [ "neovide" ];
|
||||||
|
"x-scheme-handler/chrome" = [ "com.brave.browser" ];
|
||||||
|
"inode/directory" = [ "yazi" ];
|
||||||
|
}
|
||||||
|
// image
|
||||||
|
// video
|
||||||
|
// audio
|
||||||
|
// browserTypes
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
cacheHome = config.home.homeDirectory + "/.local/cache";
|
||||||
|
|
||||||
|
mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = associations;
|
||||||
|
};
|
||||||
|
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,77 +1,43 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
modulesPath,
|
|
||||||
lib,
|
lib,
|
||||||
|
modulesPath,
|
||||||
self,
|
self,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
system = "x86_64-linux";
|
{
|
||||||
in {
|
|
||||||
imports = ["${modulesPath}/installer/cd-dvd/iso-image.nix"];
|
imports = [ "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" ];
|
||||||
nixpkgs.hostPlatform = {
|
nixpkgs.hostPlatform = {
|
||||||
inherit system;
|
system = "x86_64-linux";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
inputs.dashvim.packages.${system}.minimal
|
neovim
|
||||||
disko
|
disko
|
||||||
git
|
git
|
||||||
|
vesktop
|
||||||
|
vscodium
|
||||||
firefox
|
firefox
|
||||||
kitty
|
kitty
|
||||||
gnome-disk-utility
|
|
||||||
inputs.disko.packages.${system}.disko-install
|
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
wireless.enable = false;
|
wireless.enable = false;
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
services.greetd = {
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"pipe-operators"
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.nixos = {
|
|
||||||
isNormalUser = true;
|
|
||||||
password = "nixos";
|
|
||||||
extraGroups = ["wheel"];
|
|
||||||
};
|
|
||||||
|
|
||||||
image.baseName = lib.mkForce "DashNix";
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
hyprland = {
|
|
||||||
enable = true;
|
|
||||||
withUWSM = true;
|
|
||||||
xwayland.enable = false;
|
|
||||||
};
|
|
||||||
uwsm.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.packages = [pkgs.adwaita-fonts];
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
services = {
|
|
||||||
displayManager.autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = "nixos";
|
|
||||||
};
|
|
||||||
greetd = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
terminal.vt = 1;
|
initial_session = {
|
||||||
default_session = {
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
command = "${lib.getExe pkgs.hyprland}";
|
|
||||||
user = "nixos";
|
user = "nixos";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
isoImage = {
|
isoImage = {
|
||||||
|
isoName = lib.mkForce "DashNix.iso";
|
||||||
makeEfiBootable = true;
|
makeEfiBootable = true;
|
||||||
makeUsbBootable = true;
|
makeUsbBootable = true;
|
||||||
contents = [
|
contents = [
|
||||||
|
|
@ -81,6 +47,4 @@ in {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
339
lib/default.nix
|
|
@ -1,191 +1,42 @@
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
unstable,
|
|
||||||
self,
|
|
||||||
system,
|
|
||||||
permittedPackages,
|
|
||||||
dashNixAdditionalProps ? {},
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
defaultConfig = {
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
permittedInsecurePackages = permittedPackages;
|
|
||||||
};
|
|
||||||
overlays = [
|
|
||||||
inputs.cachy.overlays.default
|
|
||||||
inputs.nur.overlays.default
|
|
||||||
];
|
|
||||||
inherit system;
|
|
||||||
};
|
|
||||||
mkPkgs = {
|
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
self,
|
||||||
}: let
|
|
||||||
overlays =
|
|
||||||
if (config ? overlays)
|
|
||||||
then config.overlays
|
|
||||||
else [];
|
|
||||||
comnbinedConfig = config // {overlays = overlays ++ defaultConfig.overlays;};
|
|
||||||
in
|
|
||||||
import pkgs comnbinedConfig;
|
|
||||||
in rec {
|
|
||||||
mkNixos = {
|
|
||||||
root,
|
|
||||||
inputLib,
|
|
||||||
lib,
|
lib,
|
||||||
stablePkgs,
|
additionalMods ? {
|
||||||
unstablePkgs,
|
nixos = [ ];
|
||||||
stableMods,
|
home = [ ];
|
||||||
unstableMods,
|
},
|
||||||
overridePkgs,
|
mods ? {
|
||||||
|
nixos = [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
../base
|
||||||
|
../home
|
||||||
|
../modules
|
||||||
|
];
|
||||||
|
home = [
|
||||||
|
inputs.anyrun.homeManagerModules.default
|
||||||
|
inputs.ironbar.homeManagerModules.default
|
||||||
|
inputs.oxicalc.homeManagerModules.default
|
||||||
|
inputs.oxishut.homeManagerModules.default
|
||||||
|
inputs.oxinoti.homeManagerModules.default
|
||||||
|
inputs.oxidash.homeManagerModules.default
|
||||||
|
inputs.oxipaste.homeManagerModules.default
|
||||||
|
inputs.hyprdock.homeManagerModules.default
|
||||||
|
inputs.hyprland.homeManagerModules.default
|
||||||
|
inputs.reset.homeManagerModules.default
|
||||||
|
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
inputs.dashvim.homeManagerModules.dashvim
|
||||||
|
../modules
|
||||||
|
];
|
||||||
|
},
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
builtins.listToAttrs (
|
{
|
||||||
map
|
/**
|
||||||
(name: {
|
# build_systems
|
||||||
inherit name;
|
|
||||||
value = let
|
|
||||||
mod = root + /hosts/${name}/configuration.nix;
|
|
||||||
additionalNixosConfig = root + /hosts/${name}/hardware.nix;
|
|
||||||
additionalHomeConfig = root + /hosts/${name}/home.nix;
|
|
||||||
args = {
|
|
||||||
inherit
|
|
||||||
self
|
|
||||||
inputs
|
|
||||||
mod
|
|
||||||
additionalHomeConfig
|
|
||||||
system
|
|
||||||
root
|
|
||||||
dashNixAdditionalProps
|
|
||||||
lib
|
|
||||||
;
|
|
||||||
stable = stablePkgs;
|
|
||||||
unstable = unstablePkgs;
|
|
||||||
pkgs = lib.mkForce (
|
|
||||||
if overridePkgs
|
|
||||||
then stablePkgs
|
|
||||||
else unstablePkgs
|
|
||||||
);
|
|
||||||
alternativePkgs =
|
|
||||||
if overridePkgs
|
|
||||||
then unstablePkgs
|
|
||||||
else stablePkgs;
|
|
||||||
hostName = name;
|
|
||||||
homeMods =
|
|
||||||
if overridePkgs
|
|
||||||
then unstableMods.home
|
|
||||||
else stableMods.home;
|
|
||||||
mkDashDefault = import ./override.nix {inherit lib;};
|
|
||||||
};
|
|
||||||
nixosMods =
|
|
||||||
if overridePkgs
|
|
||||||
then unstableMods.nixos
|
|
||||||
else stableMods.nixos;
|
|
||||||
in
|
|
||||||
inputLib.nixosSystem {
|
|
||||||
modules =
|
|
||||||
[
|
|
||||||
{_module.args = args;}
|
|
||||||
mod
|
|
||||||
]
|
|
||||||
++ nixosMods
|
|
||||||
++ lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig
|
|
||||||
++ lib.optional (builtins.pathExists mod) mod;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(
|
|
||||||
lib.lists.remove "" (
|
|
||||||
lib.attrsets.mapAttrsToList (name: fType:
|
|
||||||
if fType == "directory"
|
|
||||||
then name
|
|
||||||
else "") (
|
|
||||||
builtins.readDir (root + /hosts)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
mkHome = {
|
|
||||||
root,
|
|
||||||
lib,
|
|
||||||
stablePkgs,
|
|
||||||
unstablePkgs,
|
|
||||||
stableMods,
|
|
||||||
unstableMods,
|
|
||||||
overridePkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(name: {
|
|
||||||
inherit name;
|
|
||||||
value = let
|
|
||||||
mod = root + /homes/${name}/configuration.nix;
|
|
||||||
additionalHomeConfig = root + /homes/${name}/home.nix;
|
|
||||||
args = {
|
|
||||||
inherit
|
|
||||||
self
|
|
||||||
inputs
|
|
||||||
mod
|
|
||||||
additionalHomeConfig
|
|
||||||
system
|
|
||||||
root
|
|
||||||
dashNixAdditionalProps
|
|
||||||
lib
|
|
||||||
;
|
|
||||||
stable = stablePkgs;
|
|
||||||
unstable = unstablePkgs;
|
|
||||||
pkgs = lib.mkForce (
|
|
||||||
if overridePkgs
|
|
||||||
then stablePkgs
|
|
||||||
else unstablePkgs
|
|
||||||
);
|
|
||||||
alternativePkgs =
|
|
||||||
if overridePkgs
|
|
||||||
then unstablePkgs
|
|
||||||
else stablePkgs;
|
|
||||||
userName = name;
|
|
||||||
mkDashDefault = import ./override.nix {inherit lib;};
|
|
||||||
};
|
|
||||||
homeMods =
|
|
||||||
if overridePkgs
|
|
||||||
then unstableMods.home
|
|
||||||
else stableMods.home;
|
|
||||||
in
|
|
||||||
inputs.home-manager.lib.homeManagerConfiguration
|
|
||||||
{
|
|
||||||
inherit (args) pkgs;
|
|
||||||
modules =
|
|
||||||
[
|
|
||||||
{_module.args = args;}
|
|
||||||
mod
|
|
||||||
]
|
|
||||||
++ homeMods
|
|
||||||
++ [
|
|
||||||
../home/common.nix
|
|
||||||
../home/themes
|
|
||||||
../home/sync.nix
|
|
||||||
./foxwrappers.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists mod) mod;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(
|
|
||||||
lib.lists.remove "" (
|
|
||||||
lib.attrsets.mapAttrsToList (name: fType:
|
|
||||||
if fType == "directory"
|
|
||||||
then name
|
|
||||||
else "") (
|
|
||||||
builtins.readDir (root + /homes)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
# buildSystems
|
|
||||||
|
|
||||||
Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well.
|
Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well.
|
||||||
|
|
||||||
|
|
@ -200,7 +51,8 @@ in rec {
|
||||||
# Example usage
|
# Example usage
|
||||||
:::{.example}
|
:::{.example}
|
||||||
```nix
|
```nix
|
||||||
nixosConfigurations = buildSystems { root = ./.; };
|
nixosConfigurations =
|
||||||
|
(build_systems [ "nixos" ] ./.);
|
||||||
```
|
```
|
||||||
:::
|
:::
|
||||||
*/
|
*/
|
||||||
|
|
@ -211,82 +63,53 @@ in rec {
|
||||||
# );
|
# );
|
||||||
|
|
||||||
# in
|
# in
|
||||||
buildFunc = func: {
|
build_systems =
|
||||||
root,
|
root:
|
||||||
unstableBundle ? {},
|
builtins.listToAttrs (
|
||||||
stableBundle ? {},
|
map
|
||||||
overridePkgs ? false,
|
(name: {
|
||||||
...
|
name = name;
|
||||||
}: let
|
value =
|
||||||
defaultNixosMods = inputs: [
|
let
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
mod = root + /hosts/${name}/configuration.nix;
|
||||||
inputs.nixos-wsl.nixosModules.default
|
additionalNixosConfig = root + /hosts/${name}/hardware.nix;
|
||||||
inputs.home-manager.nixosModules.home-manager
|
additionalHomeConfig = root + /hosts/${name}/home.nix;
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.superfreq.nixosModules.default
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
../base
|
|
||||||
../home
|
|
||||||
../modules
|
|
||||||
];
|
|
||||||
|
|
||||||
defaultHomeMods = inputs: [
|
|
||||||
inputs.anyrun.homeManagerModules.default
|
|
||||||
inputs.ironbar.homeManagerModules.default
|
|
||||||
inputs.oxicalc.homeManagerModules.default
|
|
||||||
inputs.oxishut.homeManagerModules.default
|
|
||||||
inputs.oxinoti.homeManagerModules.default
|
|
||||||
inputs.oxidash.homeManagerModules.default
|
|
||||||
inputs.oxipaste.homeManagerModules.default
|
|
||||||
inputs.oxirun.homeManagerModules.default
|
|
||||||
inputs.hyprdock.homeManagerModules.default
|
|
||||||
inputs.hyprland.homeManagerModules.default
|
|
||||||
inputs.reset.homeManagerModules.default
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
inputs.dashvim.homeManagerModules.dashvim
|
|
||||||
../modules
|
|
||||||
];
|
|
||||||
|
|
||||||
unstableInput = unstableBundle.pkgs or inputs.unstable;
|
|
||||||
stableInput = stableBundle.pkgs or inputs.stable;
|
|
||||||
unstableConfig = unstableBundle.config or defaultConfig;
|
|
||||||
stableConfig = stableBundle.config or defaultConfig;
|
|
||||||
unstableInputs = (unstableBundle.inputs or {}) // inputs;
|
|
||||||
stableInputs = (stableBundle.inputs or {}) // inputs;
|
|
||||||
unstableMods = {
|
|
||||||
home = (defaultHomeMods unstableInputs) ++ (unstableBundle.mods.home or []);
|
|
||||||
nixos = (defaultNixosMods unstableInputs) ++ (unstableBundle.mods.nixos or []);
|
|
||||||
};
|
|
||||||
stableMods = {
|
|
||||||
home = (defaultHomeMods stableInputs) ++ (stableBundle.mods.home or []);
|
|
||||||
nixos = (defaultNixosMods stableInputs) ++ (stableBundle.mods.nixos or []);
|
|
||||||
};
|
|
||||||
|
|
||||||
unstablePkgs = mkPkgs {
|
|
||||||
pkgs = unstableInput;
|
|
||||||
config = unstableConfig;
|
|
||||||
};
|
|
||||||
stablePkgs = mkPkgs {
|
|
||||||
pkgs = stableInput;
|
|
||||||
config = stableConfig;
|
|
||||||
};
|
|
||||||
inputLib = unstableInput.lib;
|
|
||||||
inherit (unstablePkgs) lib;
|
|
||||||
in
|
in
|
||||||
func {
|
inputs.nixpkgs.lib.nixosSystem {
|
||||||
inherit lib inputLib stablePkgs unstablePkgs stableMods unstableMods stableInputs unstableInputs root overridePkgs;
|
|
||||||
};
|
|
||||||
|
|
||||||
buildSystems = buildFunc mkNixos;
|
|
||||||
buildHome = buildFunc mkHome;
|
|
||||||
|
|
||||||
buildIso = inputs.unstable.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit self inputs unstable;
|
inherit
|
||||||
|
self
|
||||||
|
inputs
|
||||||
|
pkgs
|
||||||
|
mod
|
||||||
|
additionalHomeConfig
|
||||||
|
root
|
||||||
|
;
|
||||||
|
hostName = name;
|
||||||
|
homeMods = mods.home;
|
||||||
|
additionalHomeMods = additionalMods.home;
|
||||||
};
|
};
|
||||||
modules = [
|
modules =
|
||||||
../iso/configuration.nix
|
[ mod ]
|
||||||
];
|
++ mods.nixos
|
||||||
|
++ additionalMods.nixos
|
||||||
|
++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig
|
||||||
|
++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(
|
||||||
|
lib.lists.remove "" (
|
||||||
|
lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") (
|
||||||
|
builtins.readDir (root + /hosts)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
buildIso = inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit self inputs pkgs;
|
||||||
|
};
|
||||||
|
modules = [ ../iso/configuration.nix ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
name,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
mkExtension = id: install_url: {
|
|
||||||
${id} = {
|
|
||||||
inherit install_url;
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
options.mods.browser.${name} = {
|
|
||||||
darkreader = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Whether to enable darkreader";
|
|
||||||
};
|
|
||||||
extensions = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
(mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi")
|
|
||||||
(mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi")
|
|
||||||
(mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi")
|
|
||||||
(mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi")
|
|
||||||
(mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi")
|
|
||||||
(mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi")
|
|
||||||
(mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi")
|
|
||||||
(mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi")
|
|
||||||
(mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi")
|
|
||||||
(mkExtension "{20a9bb38-ed7c-4faf-9aaf-7c5d241fd747}" "https://addons.mozilla.org/firefox/downloads/file/4524699/angular_devtools-1.0.37.xpi")
|
|
||||||
(mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi")
|
|
||||||
];
|
|
||||||
example = [
|
|
||||||
{
|
|
||||||
"78272b6fa58f4a1abaac99321d503a20@proton.me" = {
|
|
||||||
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/proton-pass/latest.xpi";
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = with lib.types; listOf anything;
|
|
||||||
description = ''
|
|
||||||
List of extensions via attrsets:
|
|
||||||
```nix
|
|
||||||
# id
|
|
||||||
# figure out the id via:
|
|
||||||
# nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin'
|
|
||||||
"uBlock0@raymondhill.net" = {
|
|
||||||
# install url
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
|
||||||
# method https://mozilla.github.io/policy-templates/#extensionsettings
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
# https://github.com/0xc000022070/zen-browser-flake/issues/9#issuecomment-2711057434
|
|
||||||
{inputs, ...}: let
|
|
||||||
mkFirefoxModule = import "${inputs.home-manager.outPath}/modules/programs/firefox/mkFirefoxModule.nix";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(mkFirefoxModule {
|
|
||||||
modulePath = [
|
|
||||||
"programs"
|
|
||||||
"zen-browser"
|
|
||||||
];
|
|
||||||
name = "Zen Browser";
|
|
||||||
wrappedPackageName = "zen";
|
|
||||||
unwrappedPackageName = "zen-unwrapped";
|
|
||||||
visible = true;
|
|
||||||
platforms = {
|
|
||||||
linux = {
|
|
||||||
vendorPath = ".zen";
|
|
||||||
configPath = ".zen";
|
|
||||||
};
|
|
||||||
darwin = {
|
|
||||||
configPath = "Library/Application Support/Zen";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkFirefoxModule {
|
|
||||||
modulePath = [
|
|
||||||
"programs"
|
|
||||||
"librewolf-dashnix"
|
|
||||||
];
|
|
||||||
name = "LibreWolf";
|
|
||||||
description = "LibreWolf is a privacy enhanced Firefox fork.";
|
|
||||||
wrappedPackageName = "librewolf";
|
|
||||||
unwrappedPackageName = "librewolf-unwrapped";
|
|
||||||
|
|
||||||
platforms.linux = {configPath = ".librewolf";};
|
|
||||||
platforms.darwin = {
|
|
||||||
configPath = "Library/Application Support/LibreWolf";
|
|
||||||
};
|
|
||||||
|
|
||||||
enableBookmarks = false;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
currentSystem,
|
|
||||||
permittedPackages,
|
|
||||||
pkgs,
|
|
||||||
}:
|
|
||||||
import pkgs {
|
|
||||||
system = currentSystem;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
permittedInsecurePackages = permittedPackages;
|
|
||||||
};
|
|
||||||
overlays = [
|
|
||||||
inputs.nur.overlays.default
|
|
||||||
inputs.cachy.overlays.default
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{lib, ...}: value: lib.mkOverride 999 value
|
|
||||||
446
lib/wm.nix
|
|
@ -1,446 +0,0 @@
|
||||||
let
|
|
||||||
browserName = config:
|
|
||||||
if (builtins.isString config.mods.homePackages.browser)
|
|
||||||
then config.mods.homePackages.browser
|
|
||||||
else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram
|
|
||||||
then config.mods.homePackages.browser.meta.mainProgram
|
|
||||||
else config.mods.homePackages.browser.pname;
|
|
||||||
mkSimpleBind = modKeys: key: command: args: {
|
|
||||||
inherit modKeys key command args;
|
|
||||||
};
|
|
||||||
mkRepeatSimpleBind = modKeys: key: command: args: {
|
|
||||||
inherit modKeys key command args;
|
|
||||||
meta.hyprland.repeat = true;
|
|
||||||
};
|
|
||||||
mkSimpleCustomBind = modKeys: key: niri: hyprland: args: {
|
|
||||||
inherit modKeys key args;
|
|
||||||
command = {
|
|
||||||
inherit niri hyprland;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mkRepeatCustomBind = modKeys: key: niri: hyprland: args: {
|
|
||||||
inherit modKeys key args;
|
|
||||||
command = {
|
|
||||||
inherit niri hyprland;
|
|
||||||
};
|
|
||||||
meta.hyprland.repeat = true;
|
|
||||||
};
|
|
||||||
mkBindWithDesc = modKeys: key: command: args: desc:
|
|
||||||
{
|
|
||||||
meta.niri.desc = desc;
|
|
||||||
}
|
|
||||||
// mkSimpleBind modKeys key command args;
|
|
||||||
in {
|
|
||||||
defaultWindowRules = {
|
|
||||||
niri = [
|
|
||||||
''
|
|
||||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
|
||||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
|
||||||
|
|
||||||
block-out-from "screen-capture"
|
|
||||||
''
|
|
||||||
''
|
|
||||||
match app-id=r#"^steam$"#
|
|
||||||
open-on-workspace "0"
|
|
||||||
''
|
|
||||||
''
|
|
||||||
geometry-corner-radius 12
|
|
||||||
clip-to-geometry true
|
|
||||||
''
|
|
||||||
];
|
|
||||||
hyprland = [
|
|
||||||
# window rules
|
|
||||||
"match:class OxiCalc, float on"
|
|
||||||
"match:class winecfg.exe, float on"
|
|
||||||
"match:class copyq, float on"
|
|
||||||
"match:class swappy, center on"
|
|
||||||
"match:class steam, workspace 10 silent"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultStartup = config: {
|
|
||||||
all = [
|
|
||||||
"systemctl --user import-environment"
|
|
||||||
"dbus-update-activation-environment --systemd --all"
|
|
||||||
"hyprctl setcursor ${config.mods.stylix.cursor.name} ${toString config.mods.stylix.cursor.size}"
|
|
||||||
# ensures the systemd service knows what "hyprctl" is :)
|
|
||||||
(
|
|
||||||
if config.mods.gaming.gamemode
|
|
||||||
then "systemctl try-restart gamemoded.service --user"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
|
|
||||||
# other programs
|
|
||||||
"${browserName config}"
|
|
||||||
(
|
|
||||||
if config.mods.oxi.hyprdock.enable
|
|
||||||
then "hyprdock --server"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.hypr.hyprpaper.enable
|
|
||||||
then "hyprpaper"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.hypr.hyprland.useIronbar
|
|
||||||
then "ironbar"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxipaste.enable
|
|
||||||
then "oxipaste_daemon"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxinoti.enable
|
|
||||||
then "oxinoti"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
];
|
|
||||||
niri = [
|
|
||||||
"XDG_CURRENT_DESKTOP=Niri"
|
|
||||||
"XDG_SESSION_DESKTOP=Niri"
|
|
||||||
"XDG_SESSION_TYPE=wayland"
|
|
||||||
];
|
|
||||||
hyprland = [
|
|
||||||
"XDG_CURRENT_DESKTOP=Hyprland"
|
|
||||||
"XDG_SESSION_DESKTOP=Hyprland"
|
|
||||||
"XDG_SESSION_TYPE=wayland"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultEnv = config: {
|
|
||||||
all = {
|
|
||||||
GTK_CSD = "0";
|
|
||||||
TERM = "kitty /bin/fish";
|
|
||||||
HYPRCURSOR_THEME = config.mods.stylix.cursor.name;
|
|
||||||
HYPRCURSOR_SIZE = toString config.mods.stylix.cursor.size;
|
|
||||||
XCURSOR_THEME = config.mods.stylix.cursor.name;
|
|
||||||
XCURSOR_SIZE = toString config.mods.stylix.cursor.size;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
QT_QPA_PLATFORMTHEME = "qt5ct";
|
|
||||||
QT_WAYLAND_FORCE_DPI = "96";
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "0";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
QT_SCALE_FACTOR = "1";
|
|
||||||
EDITOR = "neovide --novsync --nofork";
|
|
||||||
|
|
||||||
LIBVA_DRIVER_NAME =
|
|
||||||
if config.mods.gpu.nvidia.enable
|
|
||||||
then "nvidia"
|
|
||||||
else "";
|
|
||||||
GBM_BACKEND =
|
|
||||||
if config.mods.gpu.nvidia.enable
|
|
||||||
then "nvidia-drm"
|
|
||||||
else "";
|
|
||||||
__GLX_VENDOR_LIBRARY_NAME =
|
|
||||||
if config.mods.gpu.nvidia.enable
|
|
||||||
then "nvidia"
|
|
||||||
else "";
|
|
||||||
};
|
|
||||||
niri = {};
|
|
||||||
hyprland = {};
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultBinds = config: [
|
|
||||||
(mkSimpleBind ["Mod"] "1" "focusWorkspace" ["1"])
|
|
||||||
(mkSimpleBind ["Mod"] "2" "focusWorkspace" ["2"])
|
|
||||||
(mkSimpleBind ["Mod"] "3" "focusWorkspace" ["3"])
|
|
||||||
(mkSimpleBind ["Mod"] "4" "focusWorkspace" ["4"])
|
|
||||||
(mkSimpleBind ["Mod"] "5" "focusWorkspace" ["5"])
|
|
||||||
(mkSimpleBind ["Mod"] "6" "focusWorkspace" ["6"])
|
|
||||||
(mkSimpleBind ["Mod"] "7" "focusWorkspace" ["7"])
|
|
||||||
(mkSimpleBind ["Mod"] "8" "focusWorkspace" ["8"])
|
|
||||||
(mkSimpleBind ["Mod"] "9" "focusWorkspace" ["9"])
|
|
||||||
(mkSimpleBind ["Mod"] "0" "focusWorkspace" ["10"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "1" "moveToWorkspace" ["1"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "2" "moveToWorkspace" ["2"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "3" "moveToWorkspace" ["3"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "4" "moveToWorkspace" ["4"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "5" "moveToWorkspace" ["5"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "6" "moveToWorkspace" ["6"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "7" "moveToWorkspace" ["7"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "8" "moveToWorkspace" ["8"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "9" "moveToWorkspace" ["9"])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "0" "moveToWorkspace" ["10"])
|
|
||||||
(mkSimpleBind ["Mod"] "B" "toggleFullscreen" [])
|
|
||||||
(mkSimpleBind ["Mod"] "V" "toggleFloating" [])
|
|
||||||
(mkSimpleBind ["Mod" "Shift"] "M" "quit" [])
|
|
||||||
(mkSimpleBind ["Mod"] "Left" "moveWindowLeft" [])
|
|
||||||
(mkSimpleBind ["Mod"] "Down" "moveWindowDown" [])
|
|
||||||
(mkSimpleBind ["Mod"] "Up" "moveWindowUp" [])
|
|
||||||
(mkSimpleBind ["Mod"] "Right" "moveWindowRight" [])
|
|
||||||
|
|
||||||
(mkRepeatSimpleBind ["Mod"] "J" "moveFocusLeft" [])
|
|
||||||
(mkRepeatSimpleBind ["Mod"] "K" "moveFocusDown" [])
|
|
||||||
(mkRepeatSimpleBind ["Mod"] "L" "moveFocusUp" [])
|
|
||||||
(mkRepeatSimpleBind ["Mod"] "semicolon" "moveFocusRight" [])
|
|
||||||
|
|
||||||
(mkBindWithDesc ["Mod"] "Q" "killActive" [] "Kill active window")
|
|
||||||
|
|
||||||
(mkBindWithDesc ["Mod"] "N" "spawn" ["neovide"] "Open Neovide")
|
|
||||||
(mkBindWithDesc ["Mod"] "T" "spawn-sh" ["kitty" "-1"] "Open Kitty")
|
|
||||||
(mkBindWithDesc ["Mod" "Shift"] "L" "spawn" ["hyprlock"] "Lock screen")
|
|
||||||
|
|
||||||
(
|
|
||||||
if config.mods.yazi.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "E" "spawn-sh" ["EDITOR='neovide --no-fork' kitty yazi"] "Open Yazi"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.anyrun.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "R" "spawn" ["anyrun"] "Open Anyrun"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxirun.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "R" "spawn" ["oxirun"] "Open OxiRun"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxidash.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "M" "spawn" ["oxidash"] "Open OxiDash"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxicalc.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "G" "spawn" ["oxicalc"] "Open Oxicalc"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxishut.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "D" "spawn" ["oxishut"] "Open OxiShut"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.oxipaste.enable
|
|
||||||
then mkBindWithDesc ["Mod"] "A" "spawn" ["oxipaste"] "Open Oxipaste"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.oxi.hyprdock.enable
|
|
||||||
then mkBindWithDesc ["Mod" "Shift"] "P" "spawn" ["hyprdock --gui"] "Open Hyprdock"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.hypr.hyprlock.enable
|
|
||||||
then mkBindWithDesc ["Mod" "Shift" "Alt"] "L" "spawn-sh" ["playerctl -a pause & hyprlock & systemctl suspend"] "Lock and suspend"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.hypr.hyprlock.enable
|
|
||||||
then mkBindWithDesc ["Mod" "Shift" "Alt"] "K" "spawn-sh" ["playerctl -a pause & hyprlock & systemctl hibernate"] "Lock and hibernate"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
|
|
||||||
(mkBindWithDesc ["Mod"] "F" "spawn" ["${browserName config}"] "Open Browser")
|
|
||||||
(
|
|
||||||
if
|
|
||||||
(
|
|
||||||
browserName config == "firefox" || browserName config == "zen"
|
|
||||||
)
|
|
||||||
then mkBindWithDesc ["Mod" "Shift"] "F" "spawn" ["${browserName config} -p special"] "Open Browser Special Profile"
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
|
|
||||||
(mkBindWithDesc ["Mod"] "S" "spawn-sh" [''grim -g "$(slurp)" - | wl-copy''] "Take Screenshot")
|
|
||||||
(mkBindWithDesc ["Mod" "Shift"] "S" "spawn-sh" [''grim -g "$(slurp)" - | satty -f -''] "Take Screenshot and edit")
|
|
||||||
|
|
||||||
(
|
|
||||||
if config.mods.scripts.audioControl
|
|
||||||
then {
|
|
||||||
key = "XF86AudioMute";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["audioControl mute"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Mute Audio";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.scripts.audioControl
|
|
||||||
then {
|
|
||||||
key = "XF86AudioRaiseVolume";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["audioControl +5%"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Raise Audio Volume";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.scripts.audioControl
|
|
||||||
then {
|
|
||||||
key = "XF86AudioLowerVolume";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["audioControl -5%"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Lower Audio Volume";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
{
|
|
||||||
key = "XF86AudioPlay";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["playerctl play-pause"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Play/Pause";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "XF86AudioNext";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["playerctl next"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Next Song";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "XF86AudioPrev";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["playerctl previous"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Previous Song";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
(
|
|
||||||
if config.mods.scripts.changeBrightness
|
|
||||||
then {
|
|
||||||
key = "XF86MonBrightnessDown";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["changeBrightness -10%"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Lower Brigthness";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
(
|
|
||||||
if config.mods.scripts.changeBrightness
|
|
||||||
then {
|
|
||||||
key = "XF86MonBrightnessUp";
|
|
||||||
command = "spawn-sh";
|
|
||||||
args = ["changeBrightness +10%"];
|
|
||||||
meta.niri = {
|
|
||||||
allowWhileLocked = true;
|
|
||||||
desc = "Raise Brigthness";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Niri only keybinds
|
|
||||||
(mkSimpleCustomBind ["Mod"] "BracketLeft" "consume-or-expel-window-left" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "BracketRight" "consume-or-expel-window-right" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "Comma" "consume-window-into-column" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "Period" "expel-window-from-column" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "Y" "switch-preset-column-width" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "Tab" "focus-workspace-previous" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "V" "switch-focus-between-floating-and-tiling" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "B" "expand-column-to-available-width" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "U" "set-column-width" null ["-10%"])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "P" "set-column-width" null ["+10%"])
|
|
||||||
(mkSimpleCustomBind ["Mod"] "O" "set-column-width" null ["50%"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "Minus" "set-window-height" null ["-10%"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "Equal" "set-window-height" null ["+10%"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "1" "move-column-to-workspace" null ["1"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "2" "move-column-to-workspace" null ["2"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "3" "move-column-to-workspace" null ["3"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "4" "move-column-to-workspace" null ["4"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "5" "move-column-to-workspace" null ["5"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "6" "move-column-to-workspace" null ["6"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "7" "move-column-to-workspace" null ["7"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "8" "move-column-to-workspace" null ["8"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "9" "move-column-to-workspace" null ["9"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "0" "move-column-to-workspace" null ["10"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "J" "focus-monitor-left" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "semicolon" "focus-monitor-right" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "J" "move-column-to-monitor-left" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Ctrl"] "semicolon" "move-column-to-monitor-right" null [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "Shift"] "Slash" "show-hotkey-overlay" null [])
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "W";
|
|
||||||
command.niri = "toggle-overview";
|
|
||||||
meta.niri = {
|
|
||||||
desc = "Overview";
|
|
||||||
repeat = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "Escape";
|
|
||||||
command.niri = "toggle-keyboard-shortcuts-inhibit";
|
|
||||||
meta.niri = {
|
|
||||||
allowInhibit = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "WheelScrollUp";
|
|
||||||
command.niri = "focus-workspace-up";
|
|
||||||
meta.niri.cooldown = 150;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "WheelScrollDown";
|
|
||||||
command.niri = "focus-workspace-down";
|
|
||||||
meta.niri.cooldown = 150;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "WheelScrollRight";
|
|
||||||
command.niri = "focus-column-right";
|
|
||||||
meta.niri.cooldown = 150;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "WheelScrollLeft";
|
|
||||||
command.niri = "focus-column-left";
|
|
||||||
meta.niri.cooldown = 150;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Hyprland only keybinds
|
|
||||||
(mkSimpleCustomBind ["Mod"] "C" null "togglesplit" [])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "1" null "movetoworkspacesilent" ["1"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "2" null "movetoworkspacesilent" ["2"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "3" null "movetoworkspacesilent" ["3"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "4" null "movetoworkspacesilent" ["4"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "5" null "movetoworkspacesilent" ["5"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "6" null "movetoworkspacesilent" ["6"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "7" null "movetoworkspacesilent" ["7"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "8" null "movetoworkspacesilent" ["8"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "9" null "movetoworkspacesilent" ["9"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "0" null "movetoworkspacesilent" ["10"])
|
|
||||||
(mkRepeatCustomBind ["Mod"] "U" null "resizeactive" ["-20" "0"])
|
|
||||||
(mkRepeatCustomBind ["Mod"] "P" null "resizeactive" ["20" "0"])
|
|
||||||
(mkRepeatCustomBind ["Mod"] "O" null "resizeactive" ["0" "-20"])
|
|
||||||
(mkRepeatCustomBind ["Mod"] "I" null "resizeactive" ["0" "20"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "ALT"] "J" null "layoutmsg" ["preselect" "l"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "ALT"] "K" null "layoutmsg" ["preselect" "d"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "ALT"] "L" null "layoutmsg" ["preselect" "u"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "ALT"] "semicolon" null "layoutmsg" ["preselect" "r"])
|
|
||||||
(mkSimpleCustomBind ["Mod" "ALT"] "H" null "layoutmsg" ["preselect" "n"])
|
|
||||||
(
|
|
||||||
if config.mods.hypr.hyprland.hyprspaceEnable
|
|
||||||
then {
|
|
||||||
modKeys = ["Mod"];
|
|
||||||
key = "W";
|
|
||||||
command.hyprland = "overview:toggle";
|
|
||||||
args = [];
|
|
||||||
}
|
|
||||||
else {}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
293
logo.svg
|
|
@ -1,293 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="38.753597mm"
|
|
||||||
height="65.022255mm"
|
|
||||||
viewBox="0 0 38.753597 65.022256"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
xml:space="preserve"
|
|
||||||
sodipodi:docname="logo.svg"
|
|
||||||
inkscape:export-filename="logo4.svg"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
|
|
||||||
id="title39">DashNix</title><sodipodi:namedview
|
|
||||||
id="namedview1"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
inkscape:zoom="1.3808026"
|
|
||||||
inkscape:cx="-3.9831908"
|
|
||||||
inkscape:cy="-63.368944"
|
|
||||||
inkscape:window-width="2480"
|
|
||||||
inkscape:window-height="1394"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg1" /><defs
|
|
||||||
id="defs1"><linearGradient
|
|
||||||
id="linearGradient106"><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop106" /><stop
|
|
||||||
style="stop-color:#28b3fc;stop-opacity:1;"
|
|
||||||
offset="0.23456791"
|
|
||||||
id="stop109" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.4526749"
|
|
||||||
id="stop108" /><stop
|
|
||||||
style="stop-color:#f8f641;stop-opacity:1;"
|
|
||||||
offset="0.59362137"
|
|
||||||
id="stop110" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="0.66358024"
|
|
||||||
id="stop111" /><stop
|
|
||||||
style="stop-color:#ff0d01;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop107" /></linearGradient><linearGradient
|
|
||||||
id="swatch2"><stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop2" /></linearGradient><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient107"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient111"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient112"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /><linearGradient
|
|
||||||
xlink:href="#linearGradient106"
|
|
||||||
id="linearGradient113"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="278.05182"
|
|
||||||
y1="-843.59747"
|
|
||||||
x2="529.8988"
|
|
||||||
y2="-736.69476"
|
|
||||||
spreadMethod="pad" /></defs><g
|
|
||||||
id="layer1"
|
|
||||||
transform="matrix(0.45379,0,0,0.45379,-29.020506,-23.643099)"><g
|
|
||||||
id="g82"
|
|
||||||
transform="matrix(0.16779066,0,0,0.16779066,64.401373,52.777012)"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1"><g
|
|
||||||
id="layer3-7"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-141.35649,1425.3526)"><g
|
|
||||||
id="g113"><g
|
|
||||||
id="layer1-8"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
id="path4861" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1"
|
|
||||||
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
|
|
||||||
id="use4863" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
|
|
||||||
id="use4865" /><path
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
|
|
||||||
id="use4867" /><path
|
|
||||||
id="path4873"
|
|
||||||
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4875"
|
|
||||||
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path
|
|
||||||
id="use4877"
|
|
||||||
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><g
|
|
||||||
id="layer2"
|
|
||||||
style="display:none;fill:#f7f5f6;fill-opacity:1"
|
|
||||||
transform="translate(72.039038,-1799.4476)"><path
|
|
||||||
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
|
|
||||||
id="path6032"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
|
||||||
id="path5875"
|
|
||||||
d="M 385.59154,773.06721 H 284.75659 l -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
id="path5851"
|
|
||||||
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect5884"
|
|
||||||
width="48.834862"
|
|
||||||
height="226.22897"
|
|
||||||
x="-34.74221"
|
|
||||||
y="446.17056"
|
|
||||||
transform="rotate(-30)" /><path
|
|
||||||
transform="translate(0,-308.26772)"
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="path3428"
|
|
||||||
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /><use
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
xlink:href="#rect5884"
|
|
||||||
id="use4252"
|
|
||||||
transform="rotate(60,268.29786,489.4515)"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><rect
|
|
||||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5f6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
id="rect4254"
|
|
||||||
width="5.3947482"
|
|
||||||
height="115.12564"
|
|
||||||
x="545.71014"
|
|
||||||
y="467.07007"
|
|
||||||
transform="rotate(30,575.23539,-154.13386)" /></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.362108"
|
|
||||||
d="m 17.647006,93.08153 c -2.137791,-3.629135 -3.886892,-6.781154 -3.886892,-7.004491 0,-0.223334 2.036859,-3.907974 4.526353,-8.18809 2.489494,-4.280113 4.526353,-7.872269 4.526353,-7.982568 0,-0.110298 -4.202399,-0.200542 -9.338664,-0.200542 H 4.1354931 L 2.2488007,66.408408 C 1.2111198,64.594822 0.36210825,62.964051 0.36210825,62.784474 c 0,-0.179578 0.83310065,-1.791759 1.85133475,-3.582627 l 1.8513347,-3.256122 13.4477393,-0.0031 13.447739,-0.0031 4.75902,-8.234844 4.75902,-8.234843 8.039166,-0.09755 8.039169,-0.09754 -0.718362,1.18387 C 55.443173,41.109708 47.744447,54.433923 38.729994,70.067947 29.715538,85.701971 22.158685,98.760409 21.936986,99.086701 21.60128,99.580783 20.884148,98.576936 17.647006,93.08153 Z"
|
|
||||||
id="path27"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path28"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path29"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path30"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path31"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path32"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path33"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path34"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path35"
|
|
||||||
transform="matrix(3.4748797,0,0,3.4748797,156.33872,-933.32664)" /></g><g
|
|
||||||
id="layer3"
|
|
||||||
style="display:inline;opacity:1;fill:#28b3fc;fill-opacity:1"
|
|
||||||
transform="translate(-14.982227,-492.1621)"><path
|
|
||||||
id="path3336-6"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
|
||||||
style="opacity:1;fill:#28b3fc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(60,407.11155,-715.78724)"
|
|
||||||
id="use3439-6"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-60,407.31177,-715.70016)"
|
|
||||||
id="use3445-0"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(180,407.41868,-715.7565)"
|
|
||||||
id="use3449-5"
|
|
||||||
xlink:href="#path3336-6"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
|
||||||
id="path4260-0" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(120,407.33916,-716.08356)"
|
|
||||||
id="use4354-5"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /><use
|
|
||||||
height="100%"
|
|
||||||
width="100%"
|
|
||||||
transform="rotate(-120,407.28823,-715.86995)"
|
|
||||||
id="use4362-2"
|
|
||||||
xlink:href="#path4260-0"
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
style="display:inline;fill:#28b3fc;fill-opacity:1;stroke:#28b3fc;stroke-width:7.88004;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
|
||||||
id="g104"
|
|
||||||
style="fill:url(#linearGradient107);stroke:none"
|
|
||||||
transform="rotate(-13.062247,340.02897,-863.93232)"><path
|
|
||||||
id="use3449-5-0-0"
|
|
||||||
d="m 331.77633,-1001.5212 94.91305,225.23301 -55.78631,-6.46377 -25.29508,-60.48604 -39.63845,52.03815 -27.6842,-3.48227 -11.10824,-26.27568 56.46054,-74.04107 -25.77721,-61.5105 z"
|
|
||||||
style="fill:#28b3fc;fill-opacity:1" /><path
|
|
||||||
id="use3449-5-0-0-6"
|
|
||||||
d="m 457.16967,-744.75745 -70.00051,-234.1759 54.76023,12.45846 18.60597,62.86668 45.03324,-47.44663 27.14534,6.4555 8.2017,27.32283 -64.13603,67.50143 18.97452,63.93729 z"
|
|
||||||
style="fill:#ff0d01;fill-opacity:1"
|
|
||||||
sodipodi:nodetypes="cccccccccc" /><path
|
|
||||||
id="use3449-5-0-0-4"
|
|
||||||
d="m 277.21377,-582.32585 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z"
|
|
||||||
style="fill:#f8f641;fill-opacity:1" /></g></g></g></g><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke-width:0.181054"
|
|
||||||
d="m 20.413065,97.739351 c -2.448138,-4.090679 -6.658726,-11.27144 -6.752434,-11.515638 -0.05373,-0.14001 2.024274,-3.903593 4.617779,-8.363519 2.593506,-4.459926 4.715464,-8.13954 4.715464,-8.17692 0,-0.03738 -4.257035,-0.07107 -9.460078,-0.07486 L 4.0737178,69.601519 2.1145346,66.168465 0.15535114,62.73541 2.2025635,59.176688 l 2.0472121,-3.558721 13.3811224,0.07335 13.381123,0.07335 4.807164,-8.283226 4.807163,-8.283227 h 7.93127 c 4.362198,0 7.931269,0.04091 7.931269,0.0909 0,0.112152 -34.58204,60.050535 -34.768044,60.260772 -0.07356,0.08315 -0.662065,-0.731596 -1.307778,-1.810541 z"
|
|
||||||
id="path36"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 21.228346,98.82575 C 20.775825,98.187139 14.573556,87.698587 14.099569,86.770393 l -0.346608,-0.67875 1.796437,-3.213914 c 0.988041,-1.767653 3.067246,-5.409743 4.620457,-8.093538 1.553211,-2.683792 2.824019,-4.931476 2.824019,-4.99485 0,-0.110336 -11.090545,-0.351953 -16.3853984,-0.356972 L 4.0737178,69.429968 2.217913,66.175832 C 1.1972204,64.386056 0.36210825,62.847854 0.36210825,62.757606 c 0,-0.09025 0.87964515,-1.70058 1.95476695,-3.578513 l 1.954767,-3.414422 13.3895698,0.06926 13.389571,0.06926 4.821268,-8.307221 4.821271,-8.307221 3.145111,-0.04488 c 1.729813,-0.02469 5.235571,0.01605 7.790576,0.09053 l 4.645463,0.135412 -3.534135,6.15584 c -4.146422,7.222338 -16.886029,29.318862 -25.000346,43.362463 -3.135747,5.427098 -5.801825,9.976251 -5.924618,10.109228 -0.183451,0.198671 -0.288115,0.150249 -0.587027,-0.271581 z"
|
|
||||||
id="path37"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 97.636535,120.63066 c -1.389583,-2.41665 -4.382703,-7.63252 -6.651376,-11.59081 l -4.12486,-7.1969 -4.45825,-0.005 c -4.928423,-0.005 -14.743895,-0.1852 -14.838725,-0.27196 -0.03322,-0.0304 -1.827632,-3.096939 -3.987593,-6.814561 l -3.9272,-6.759314 17.535793,-0.04616 c 9.644687,-0.02539 25.387006,-0.02539 34.982936,0 l 17.44715,0.04616 -1.54239,2.715812 c -0.84832,1.493697 -2.61343,4.622573 -3.92248,6.953058 l -2.38008,4.237245 -9.38708,-0.11294 c -7.6636,-0.0922 -9.37652,-0.0697 -9.32957,0.12287 0.0316,0.1297 2.12168,3.83356 4.64454,8.23081 l 4.58703,7.995 -1.97119,3.3966 -1.9712,3.39659 -4.08947,0.0486 -4.08947,0.0486 z"
|
|
||||||
id="path38"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)" /><path
|
|
||||||
style="fill:#f7f5f6;fill-opacity:1;stroke:#28b3fc;stroke-width:2.26772;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 87.802229,39.150266 C 80.890113,27.177278 73.023088,13.551901 70.319951,8.8716522 L 65.405158,0.36210825 68.59656,0.24891517 c 1.755271,-0.0622562 5.350472,-0.12261799 7.989335,-0.1341373 l 4.797935,-0.0209442 4.519855,7.89261083 c 2.48592,4.3409365 4.610279,8.0162745 4.7208,8.1674195 0.162204,0.22183 1.117147,-1.300038 4.953498,-7.8942647 l 4.752557,-8.16907224 h 3.92896 3.92895 l 2.03256,3.50763344 c 1.1179,1.9291986 2.03255,3.5544662 2.03255,3.6117061 0,0.05724 -3.01666,5.2908554 -6.70369,11.6302564 l -6.703688,11.526185 4.779848,8.329337 4.77986,8.329337 -3.94792,6.877008 c -2.17135,3.782353 -3.97949,6.908583 -4.01808,6.947175 -0.0386,0.03859 -5.725543,-9.725911 -12.637661,-21.698899 z"
|
|
||||||
id="path39"
|
|
||||||
transform="matrix(0.58305237,0,0,0.58305237,64.401373,52.754168)"
|
|
||||||
sodipodi:nodetypes="sscsscssscccssscccsss" /></g><metadata
|
|
||||||
id="metadata39"><rdf:RDF><cc:Work
|
|
||||||
rdf:about=""><cc:license
|
|
||||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /><dc:title>DashNix</dc:title></cc:Work><cc:License
|
|
||||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
|
||||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>
|
|
||||||
|
Before Width: | Height: | Size: 28 KiB |
158
modules/conf.nix
|
|
@ -1,14 +1,19 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
pkgs,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.conf = {
|
options.conf = {
|
||||||
|
|
||||||
system = lib.mkOption {
|
system = lib.mkOption {
|
||||||
default = "x86_64-linux";
|
default = "x86_64-linux";
|
||||||
# no fisherprice unix support
|
# no fisherprice unix support
|
||||||
type = with lib.types; (enum [
|
type =
|
||||||
|
with lib.types;
|
||||||
|
(enum [
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"aarch64-linux-android"
|
"aarch64-linux-android"
|
||||||
|
|
@ -19,52 +24,12 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
systemLocalTime = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
System time for dualbooting
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
wsl = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
Runs Nix in wsl
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
secureBoot = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
enables secure boot.
|
|
||||||
Note: Secure boot is NOT reproducible
|
|
||||||
Here are the necessary steps:
|
|
||||||
+ create your keys with sbctl -> sudo sbctl create-keys
|
|
||||||
+ build with systemd once -> set this to false and build once
|
|
||||||
+ build with secureBoot true
|
|
||||||
+ verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify
|
|
||||||
+ enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft
|
|
||||||
+ reboot with secureboot enabled
|
|
||||||
Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys
|
|
||||||
You likely have to disable these vendor specific keys (example HP: sure boot)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
useSystemdBootloader = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
description = ''
|
|
||||||
use systemd bootloader.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu = lib.mkOption {
|
cpu = lib.mkOption {
|
||||||
# TODO: how to enable arm?
|
# TODO: how to enable arm?
|
||||||
default = "amd";
|
default = "amd";
|
||||||
type = with lib.types; (enum [
|
type =
|
||||||
|
with lib.types;
|
||||||
|
(enum [
|
||||||
"amd"
|
"amd"
|
||||||
"intel"
|
"intel"
|
||||||
]);
|
]);
|
||||||
|
|
@ -74,24 +39,60 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
additionalBootKernalParams = lib.mkOption {
|
monitor = lib.mkOption {
|
||||||
default = [];
|
default = "";
|
||||||
example = [];
|
example = "eDP-1";
|
||||||
type = with lib.types; listOf str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
additional kernelParams passed to bootloader
|
main monitor
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
bootParams = lib.mkOption {
|
scale = lib.mkOption {
|
||||||
default = [];
|
default = "1.0";
|
||||||
example = ["resume=something"];
|
example = "1.0";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Scale for the monitor
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
ironbar = {
|
||||||
|
modules = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [
|
||||||
|
{
|
||||||
|
type = "upower";
|
||||||
|
class = "memory-usage";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
type = with lib.types; listOf attrs;
|
||||||
|
description = ''
|
||||||
|
Adds modules to ironbar.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot_params = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ "resume=something" ];
|
||||||
type = with lib.types; listOf str;
|
type = with lib.types; listOf str;
|
||||||
description = ''
|
description = ''
|
||||||
Boot params
|
Boot params
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
streamdeck = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Install streamdeck configuration program.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
kernelOverride = lib.mkOption {
|
kernelOverride = lib.mkOption {
|
||||||
default = null;
|
default = null;
|
||||||
type = with lib.types; nullOr package;
|
type = with lib.types; nullOr package;
|
||||||
|
|
@ -103,7 +104,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
username = lib.mkOption {
|
username = lib.mkOption {
|
||||||
default = "DashNix";
|
default = "dashie";
|
||||||
example = "pingpang";
|
example = "pingpang";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
@ -129,7 +130,7 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosConfigPath = lib.mkOption {
|
nixos-config-path = lib.mkOption {
|
||||||
default = "/home/${config.conf.username}/gits/nixos/.";
|
default = "/home/${config.conf.username}/gits/nixos/.";
|
||||||
example = "yourpath/.";
|
example = "yourpath/.";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
|
|
@ -138,30 +139,63 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nvim-colorscheme = lib.mkOption {
|
||||||
|
default = {
|
||||||
|
tokyonight = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
example = {
|
||||||
|
catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
type = lib.types.attrs;
|
||||||
|
description = ''
|
||||||
|
nixvim colorscheme.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nix_path = lib.mkOption {
|
||||||
|
default = "/home${config.conf.username}/gits/nixos";
|
||||||
|
example = "yourpath";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The default path for your configuration.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
kb_layout = lib.mkOption {
|
||||||
|
default = "dashie";
|
||||||
|
example = "us";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The layout used in services.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
systemStateVersion = lib.mkOption {
|
systemStateVersion = lib.mkOption {
|
||||||
example = "24.11";
|
default = "unstable";
|
||||||
default = "23.05";
|
example = "24.05";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
System state version
|
System state version
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
homeStateVersion = lib.mkOption {
|
homeStateVersion = lib.mkOption {
|
||||||
default = "24.11";
|
default = "24.05";
|
||||||
example = "23.05";
|
example = "23.05";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Home state version
|
Home state version
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config =
|
||||||
(lib.optionalAttrs (options ? system.stateVersion) {
|
(lib.optionalAttrs (options ? system.stateVersion) {
|
||||||
boot = {
|
boot.kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel;
|
||||||
kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel;
|
|
||||||
kernelParams = config.conf.additionalBootKernalParams;
|
|
||||||
};
|
|
||||||
system.stateVersion = config.conf.systemStateVersion;
|
system.stateVersion = config.conf.systemStateVersion;
|
||||||
})
|
})
|
||||||
// (lib.optionalAttrs (options ? home.stateVersion) {
|
// (lib.optionalAttrs (options ? home.stateVersion) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
options.mods = {
|
options.mods = {
|
||||||
acpid.enable = lib.mkOption {
|
acpid.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -16,6 +18,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.acpid.enable (
|
config = lib.mkIf config.mods.acpid.enable (
|
||||||
lib.optionalAttrs (options ? virtualisation.virtualbox.host) {services.acpid.enable = true;}
|
lib.optionalAttrs (options ? virtualisation.virtualbox.host) { services.acpid.enable = true; }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,145 +0,0 @@
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
options,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.anyrun = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables anyrun";
|
|
||||||
};
|
|
||||||
useDefaultConfig = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured anyrun config.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
customConfig = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Custom anyrun configuration.
|
|
||||||
Will be merged with default configuration if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useDefaultCss = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured anyrun css.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
customCss = lib.mkOption {
|
|
||||||
default = '''';
|
|
||||||
example = ''
|
|
||||||
#window {
|
|
||||||
border-radius: none;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = ''
|
|
||||||
Custom anyrun css.
|
|
||||||
Will be merged with default css if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.anyrun.enable (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
programs.anyrun = lib.mkForce {
|
|
||||||
package = pkgs.anyrun;
|
|
||||||
enable = true;
|
|
||||||
config =
|
|
||||||
if config.mods.anyrun.useDefaultConfig
|
|
||||||
then
|
|
||||||
lib.mkMerge
|
|
||||||
[
|
|
||||||
{
|
|
||||||
plugins = [
|
|
||||||
inputs.anyrun.packages.${pkgs.system}.applications
|
|
||||||
inputs.anyrun.packages.${pkgs.system}.rink
|
|
||||||
inputs.anyrun.packages.${pkgs.system}.translate
|
|
||||||
inputs.anyrun.packages.${pkgs.system}.websearch
|
|
||||||
];
|
|
||||||
hideIcons = mkDashDefault false;
|
|
||||||
width = {
|
|
||||||
fraction = mkDashDefault 0.3;
|
|
||||||
};
|
|
||||||
y = {
|
|
||||||
fraction = mkDashDefault 0.5;
|
|
||||||
};
|
|
||||||
layer = mkDashDefault "overlay";
|
|
||||||
hidePluginInfo = mkDashDefault true;
|
|
||||||
closeOnClick = mkDashDefault true;
|
|
||||||
}
|
|
||||||
config.mods.anyrun.customConfig
|
|
||||||
]
|
|
||||||
else config.mods.anyrun.customConfig;
|
|
||||||
|
|
||||||
extraCss =
|
|
||||||
if config.mods.anyrun.useDefaultCss
|
|
||||||
then
|
|
||||||
''
|
|
||||||
#window {
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
box#main {
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
list#main {
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 0px 10px 10px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
list#plugin {
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
list#match {
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry#entry {
|
|
||||||
border: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 10px 10px 0px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
label#match-desc {
|
|
||||||
font-size: 12px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
label#match-title {
|
|
||||||
font-size: 12px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
label#plugin {
|
|
||||||
font-size: 16px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
''
|
|
||||||
+ config.mods.anyrun.customCss
|
|
||||||
else config.mods.anyrun.customCss;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,132 +0,0 @@
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods = {
|
|
||||||
basePackages = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables default system packages.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
additionalPackages = lib.mkOption {
|
|
||||||
default = [];
|
|
||||||
example = [pkgs.openssl];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = ''
|
|
||||||
Additional packages to install.
|
|
||||||
Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
specialPrograms = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
special program configuration to be added which require programs.something notation.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
specialServices = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
special services configuration to be added which require an services.something notation.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.optionalAttrs (options ? environment.systemPackages) {
|
|
||||||
environment.systemPackages =
|
|
||||||
if config.mods.basePackages.enable
|
|
||||||
then
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
inputs.statix.packages.${system}.default
|
|
||||||
adwaita-icon-theme
|
|
||||||
dbus
|
|
||||||
dconf
|
|
||||||
direnv
|
|
||||||
glib
|
|
||||||
gnome.nixos-gsettings-overrides
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
gtk-layer-shell
|
|
||||||
gtk3
|
|
||||||
gtk4
|
|
||||||
gtk4-layer-shell
|
|
||||||
hicolor-icon-theme
|
|
||||||
icon-library
|
|
||||||
kdePackages.breeze-icons
|
|
||||||
kdePackages.breeze
|
|
||||||
kdePackages.qtstyleplugin-kvantum
|
|
||||||
libsForQt5.qtstyleplugin-kvantum
|
|
||||||
libadwaita
|
|
||||||
libxkbcommon
|
|
||||||
alejandra
|
|
||||||
openssl
|
|
||||||
seahorse
|
|
||||||
upower
|
|
||||||
xorg.xkbutils
|
|
||||||
sbctl
|
|
||||||
]
|
|
||||||
++ config.mods.basePackages.additionalPackages
|
|
||||||
else config.mods.basePackages.additionalPackages;
|
|
||||||
|
|
||||||
gtk.iconCache.enable = mkDashDefault false;
|
|
||||||
services =
|
|
||||||
if config.mods.basePackages.enable
|
|
||||||
then
|
|
||||||
{
|
|
||||||
upower.enable = mkDashDefault true;
|
|
||||||
dbus = {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
};
|
|
||||||
avahi = {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
nssmdns4 = mkDashDefault true;
|
|
||||||
openFirewall = mkDashDefault true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// config.mods.basePackages.specialServices
|
|
||||||
else config.mods.basePackages.specialServices;
|
|
||||||
|
|
||||||
programs =
|
|
||||||
if config.mods.basePackages.enable
|
|
||||||
then
|
|
||||||
lib.mkMerge
|
|
||||||
[
|
|
||||||
{
|
|
||||||
nix-ld = {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
libraries = with pkgs; [
|
|
||||||
jdk
|
|
||||||
zlib
|
|
||||||
];
|
|
||||||
};
|
|
||||||
direnv = {
|
|
||||||
package = mkDashDefault pkgs.direnv;
|
|
||||||
silent = mkDashDefault false;
|
|
||||||
loadInNixShell = mkDashDefault true;
|
|
||||||
direnvrcExtra = mkDashDefault "";
|
|
||||||
nix-direnv = {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
package = mkDashDefault pkgs.nix-direnv;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gnupg.agent.enable = mkDashDefault true;
|
|
||||||
}
|
|
||||||
config.mods.basePackages.specialPrograms
|
|
||||||
]
|
|
||||||
else config.mods.basePackages.specialPrograms;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
102
modules/programs/base_packages.nix
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
base_packages = {
|
||||||
|
default_base_packages = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables default system packages.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.openssl ];
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
description = ''
|
||||||
|
Additional packages to install.
|
||||||
|
Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = (
|
||||||
|
lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
|
environment.systemPackages = config.mods.base_packages.default_base_packages.additional_packages;
|
||||||
|
}
|
||||||
|
// (lib.mkIf config.mods.base_packages.default_base_packages.enable (
|
||||||
|
lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
adwaita-icon-theme
|
||||||
|
dbus
|
||||||
|
dconf
|
||||||
|
direnv
|
||||||
|
glib
|
||||||
|
gnome.nixos-gsettings-overrides
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
gtk-layer-shell
|
||||||
|
gtk3
|
||||||
|
gtk4
|
||||||
|
gtk4-layer-shell
|
||||||
|
hicolor-icon-theme
|
||||||
|
icon-library
|
||||||
|
kdePackages.breeze-icons
|
||||||
|
libadwaita
|
||||||
|
libxkbcommon
|
||||||
|
nixfmt-rfc-style
|
||||||
|
openssl
|
||||||
|
seahorse
|
||||||
|
upower
|
||||||
|
xorg.xkbutils
|
||||||
|
];
|
||||||
|
|
||||||
|
gtk.iconCache.enable = false;
|
||||||
|
services = {
|
||||||
|
upower.enable = true;
|
||||||
|
dbus = {
|
||||||
|
enable = true;
|
||||||
|
packages = with pkgs; [ gnome2.GConf ];
|
||||||
|
};
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs; [
|
||||||
|
jdk
|
||||||
|
zlib
|
||||||
|
];
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
package = pkgs.direnv;
|
||||||
|
silent = false;
|
||||||
|
loadInNixShell = true;
|
||||||
|
direnvrcExtra = "";
|
||||||
|
nix-direnv = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nix-direnv;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ssh.startAgent = true;
|
||||||
|
gnupg.agent.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods = {
|
options.mods = {
|
||||||
bluetooth.enable = lib.mkOption {
|
bluetooth.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
config = lib.mkIf config.mods.bluetooth.enable (
|
config = lib.mkIf config.mods.bluetooth.enable (
|
||||||
lib.optionalAttrs (options ? hardware.bluetooth) {
|
lib.optionalAttrs (options ? hardware.bluetooth) {
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = mkDashDefault true;
|
enable = true;
|
||||||
powerOnBoot = mkDashDefault true;
|
powerOnBoot = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.browser.brave = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables brave";
|
|
||||||
};
|
|
||||||
# TODO configure brave
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.browser.brave.enable || config.mods.homePackages.browser == "brave") (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
home.packages = with pkgs; [brave];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.browser.chromium = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables chromium";
|
|
||||||
};
|
|
||||||
# TODO configure chromium
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.browser.chromium.enable || config.mods.homePackages.browser == "chromium") (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
home.packages = with pkgs; [chromium];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./brave.nix
|
|
||||||
./chromium.nix
|
|
||||||
./firefox.nix
|
|
||||||
./librewolf.nix
|
|
||||||
./zen.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,125 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
dashNixAdditionalProps,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
name = "firefox";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(import ../../../lib/foxextensions.nix
|
|
||||||
{inherit lib dashNixAdditionalProps pkgs name;})
|
|
||||||
];
|
|
||||||
options.mods.browser.${name} = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables firefox";
|
|
||||||
};
|
|
||||||
configuration = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
EnableTrackingProtection = {
|
|
||||||
Value = true;
|
|
||||||
Locked = true;
|
|
||||||
Cryptomining = true;
|
|
||||||
Fingerprinting = true;
|
|
||||||
};
|
|
||||||
DisablePocket = true;
|
|
||||||
DisplayBookmarksToolbar = "never";
|
|
||||||
DisplayMenuBar = "default-off";
|
|
||||||
CaptivePortal = false;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
DisableFirefoxAccounts = false;
|
|
||||||
NoDefaultBookmarks = true;
|
|
||||||
OfferToSaveLogins = false;
|
|
||||||
OfferToSaveLoginsDefault = false;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
FirefoxHome = {
|
|
||||||
Search = true;
|
|
||||||
Pocket = false;
|
|
||||||
Snippets = false;
|
|
||||||
TopSites = true;
|
|
||||||
Highlights = false;
|
|
||||||
};
|
|
||||||
UserMessaging = {
|
|
||||||
ExtensionRecommendations = false;
|
|
||||||
SkipOnboarding = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information.";
|
|
||||||
};
|
|
||||||
profiles = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
{
|
|
||||||
name = "${config.conf.username}";
|
|
||||||
value = {
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "special";
|
|
||||||
value = {
|
|
||||||
isDefault = false;
|
|
||||||
id = 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
example = [
|
|
||||||
{
|
|
||||||
name = "custom";
|
|
||||||
value = {
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = with lib.types; listOf (attrsOf anything);
|
|
||||||
description = "Firefox profiles";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.browser.firefox.enable || config.mods.homePackages.browser == "firefox") (
|
|
||||||
lib.optionalAttrs (options ? programs.firefox.profiles) {
|
|
||||||
stylix.targets.firefox.profileNames =
|
|
||||||
map (
|
|
||||||
{name, ...}:
|
|
||||||
name
|
|
||||||
)
|
|
||||||
config.mods.browser.firefox.profiles;
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
package =
|
|
||||||
pkgs.wrapFirefox
|
|
||||||
pkgs.firefox-unwrapped
|
|
||||||
{
|
|
||||||
pname = "firefox";
|
|
||||||
extraPolicies =
|
|
||||||
config.mods.browser.firefox.configuration
|
|
||||||
// {
|
|
||||||
ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.firefox.extensions
|
|
||||||
++ (
|
|
||||||
if config.mods.browser.firefox.darkreader
|
|
||||||
then [
|
|
||||||
{
|
|
||||||
"addon@darkreader.org" = {
|
|
||||||
install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi";
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
else []
|
|
||||||
));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
profiles = builtins.listToAttrs config.mods.browser.firefox.profiles;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
dashNixAdditionalProps,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
name = "librewolf";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(import ../../../lib/foxextensions.nix
|
|
||||||
{inherit lib dashNixAdditionalProps pkgs name;})
|
|
||||||
];
|
|
||||||
options.mods.browser.${name} = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables the librwolf browser";
|
|
||||||
};
|
|
||||||
configuration = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
EnableTrackingProtection = {
|
|
||||||
Value = true;
|
|
||||||
Locked = true;
|
|
||||||
Cryptomining = true;
|
|
||||||
Fingerprinting = true;
|
|
||||||
};
|
|
||||||
DisablePocket = true;
|
|
||||||
DisplayBookmarksToolbar = "never";
|
|
||||||
DisplayMenuBar = "default-off";
|
|
||||||
CaptivePortal = false;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
DisableFirefoxAccounts = false;
|
|
||||||
NoDefaultBookmarks = true;
|
|
||||||
OfferToSaveLogins = false;
|
|
||||||
OfferToSaveLoginsDefault = false;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
FirefoxHome = {
|
|
||||||
Search = true;
|
|
||||||
Pocket = false;
|
|
||||||
Snippets = false;
|
|
||||||
TopSites = true;
|
|
||||||
Highlights = false;
|
|
||||||
};
|
|
||||||
UserMessaging = {
|
|
||||||
ExtensionRecommendations = false;
|
|
||||||
SkipOnboarding = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "Librewolf policy configuration. See https://mozilla.github.io/policy-templates/ for more information.";
|
|
||||||
};
|
|
||||||
profiles = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
{
|
|
||||||
name = "${config.conf.username}";
|
|
||||||
value = {
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "special";
|
|
||||||
value = {
|
|
||||||
isDefault = false;
|
|
||||||
id = 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
example = [
|
|
||||||
{
|
|
||||||
name = "custom";
|
|
||||||
value = {
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = with lib.types; listOf (attrsOf anything);
|
|
||||||
description = "Librewolf profiles";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.browser.librewolf.enable || config.mods.homePackages.browser == "librewolf") (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
programs.librewolf-dashnix = {
|
|
||||||
enable = true;
|
|
||||||
package =
|
|
||||||
pkgs.wrapFirefox
|
|
||||||
pkgs.librewolf-unwrapped
|
|
||||||
{
|
|
||||||
pname = "librewolf";
|
|
||||||
extraPolicies =
|
|
||||||
config.mods.browser.librewolf.configuration
|
|
||||||
// {
|
|
||||||
ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.librewolf.extensions
|
|
||||||
++ (
|
|
||||||
if config.mods.browser.firefox.darkreader
|
|
||||||
then [
|
|
||||||
{
|
|
||||||
"addon@darkreader.org" = {
|
|
||||||
install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi";
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
else []
|
|
||||||
));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
||||||
# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
dashNixAdditionalProps,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
name = "zen";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
(import ../../../lib/foxextensions.nix
|
|
||||||
{inherit lib dashNixAdditionalProps pkgs name;})
|
|
||||||
];
|
|
||||||
options.mods.browser.${name} = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables the zen browser";
|
|
||||||
};
|
|
||||||
configuration = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
EnableTrackingProtection = {
|
|
||||||
Value = true;
|
|
||||||
Locked = true;
|
|
||||||
Cryptomining = true;
|
|
||||||
Fingerprinting = true;
|
|
||||||
};
|
|
||||||
DisablePocket = true;
|
|
||||||
CaptivePortal = false;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
NoDefaultBookmarks = true;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
FirefoxHome = {
|
|
||||||
Search = true;
|
|
||||||
Pocket = false;
|
|
||||||
Snippets = false;
|
|
||||||
TopSites = true;
|
|
||||||
Highlights = false;
|
|
||||||
};
|
|
||||||
UserMessaging = {
|
|
||||||
ExtensionRecommendations = false;
|
|
||||||
SkipOnboarding = true;
|
|
||||||
};
|
|
||||||
"3rdparty".Extensions = {
|
|
||||||
"addon@darkreader.org" = {
|
|
||||||
theme = {
|
|
||||||
darkSchemeBackgroundColor = "#${scheme.base00}";
|
|
||||||
darkSchemeTextColor = "#${scheme.base05}";
|
|
||||||
};
|
|
||||||
previewNewDesign = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information.";
|
|
||||||
};
|
|
||||||
profiles = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
{
|
|
||||||
name = "${config.conf.username}";
|
|
||||||
value = {
|
|
||||||
settings = {
|
|
||||||
"zen.view.compact.hide-tabbar" = false;
|
|
||||||
"zen.view.compact.hide-toolbar" = true;
|
|
||||||
"zen.view.sidebar-expanded" = false;
|
|
||||||
"zen.view.use-single-toolbar" = false;
|
|
||||||
"zen.view.welcome-screen.seen" = true;
|
|
||||||
"zen.theme.accent-color" = "#b4bbff";
|
|
||||||
"extensions.autoDisableScopes" = 0;
|
|
||||||
"cookiebanners.service.mode" = 2;
|
|
||||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
|
||||||
};
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "special";
|
|
||||||
value = {
|
|
||||||
settings = {
|
|
||||||
"zen.view.compact.hide-tabbar" = false;
|
|
||||||
"zen.view.compact.hide-toolbar" = true;
|
|
||||||
"zen.view.sidebar-expanded" = false;
|
|
||||||
"zen.view.use-single-toolbar" = false;
|
|
||||||
"zen.view.welcome-screen.seen" = true;
|
|
||||||
"zen.theme.accent-color" = "#b4bbff";
|
|
||||||
"extensions.autoDisableScopes" = 0;
|
|
||||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
|
||||||
};
|
|
||||||
isDefault = false;
|
|
||||||
id = 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
example = [
|
|
||||||
{
|
|
||||||
name = "custom";
|
|
||||||
value = {
|
|
||||||
settings = {
|
|
||||||
extensions.autoDisableScopes = 0;
|
|
||||||
};
|
|
||||||
extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader];
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = with lib.types; listOf (attrsOf anything);
|
|
||||||
description = "Zen profiles";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") (
|
|
||||||
(lib.optionalAttrs (options ? home.packages) {
|
|
||||||
programs.zen-browser = {
|
|
||||||
enable = true;
|
|
||||||
package =
|
|
||||||
pkgs.wrapFirefox
|
|
||||||
inputs.zen-browser.packages.${system}.zen-browser-unwrapped
|
|
||||||
{
|
|
||||||
pname = "zen-browser";
|
|
||||||
extraPolicies =
|
|
||||||
config.mods.browser.zen.configuration
|
|
||||||
// {
|
|
||||||
ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.zen.extensions
|
|
||||||
++ (
|
|
||||||
if config.mods.browser.firefox.darkreader
|
|
||||||
then [
|
|
||||||
{
|
|
||||||
"addon@darkreader.org" = {
|
|
||||||
install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi";
|
|
||||||
installation_mode = "normal_installed";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
else []
|
|
||||||
));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
profiles = builtins.listToAttrs config.mods.browser.zen.profiles;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
// (lib.optionalAttrs (options ? stylix.targets.zen-browser) {
|
|
||||||
stylix.targets.zen-browser.profileNames = lib.map (profile: profile.name) config.mods.browser.zen.profiles;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.clam = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables the clamav program and its daemon";
|
|
||||||
};
|
|
||||||
scanner = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables the clamav scanner";
|
|
||||||
};
|
|
||||||
interval = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "*-*-* 04:00:00";
|
|
||||||
description = ''
|
|
||||||
How often clamdscan is invoked.
|
|
||||||
By default this runs using 10 cores at most, be sure to run it at a time of low traffic.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
scanDirectories = lib.mkOption {
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
default = [
|
|
||||||
"/home"
|
|
||||||
"/var/lib"
|
|
||||||
"/tmp"
|
|
||||||
"/etc"
|
|
||||||
"/var/tmp"
|
|
||||||
];
|
|
||||||
description = ''List of directories to scan'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.clam.enable (
|
|
||||||
lib.optionalAttrs (options ? services.clamav) {
|
|
||||||
services.clamav = {
|
|
||||||
daemon.enable = true;
|
|
||||||
updater.enable = true;
|
|
||||||
scanner = {
|
|
||||||
inherit (config.mods.clam.scanner) enable;
|
|
||||||
inherit (config.mods.clam.scanner) interval;
|
|
||||||
inherit (config.mods.clam.scanner) scanDirectories;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.clamav
|
|
||||||
];
|
|
||||||
}
|
|
||||||
// lib.optionalAttrs (options ? home.packages) {home.packages = with pkgs; [clamtk];}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
options,
|
options,
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
font_family = "${config.mods.stylix.fonts.monospace.name}";
|
{
|
||||||
in {
|
|
||||||
options.mods = {
|
options.mods = {
|
||||||
coding = {
|
coding = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -36,102 +32,6 @@ in {
|
||||||
Enables jetbrains toolbox.
|
Enables jetbrains toolbox.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
vscodium = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables vscodium.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
extensions = lib.mkOption {
|
|
||||||
default = [];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = "Extensions to be installed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
penpot = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables penpot";
|
|
||||||
};
|
|
||||||
neovide = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables neovide";
|
|
||||||
};
|
|
||||||
config = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
font = {
|
|
||||||
size = 12;
|
|
||||||
normal = {
|
|
||||||
family = font_family;
|
|
||||||
style = "";
|
|
||||||
};
|
|
||||||
bold = {
|
|
||||||
family = font_family;
|
|
||||||
style = "ExtraBold";
|
|
||||||
};
|
|
||||||
italic = {
|
|
||||||
family = font_family;
|
|
||||||
style = "Italic";
|
|
||||||
};
|
|
||||||
bold_italic = {
|
|
||||||
family = font_family;
|
|
||||||
style = "Bold Italic";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "Config for neovide";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gh = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables and configures gh";
|
|
||||||
};
|
|
||||||
config = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
version = 1;
|
|
||||||
git_protocol = "ssh";
|
|
||||||
editor = "";
|
|
||||||
prompt = "enabled";
|
|
||||||
prefer_editor_prompt = "disabled";
|
|
||||||
pager = "";
|
|
||||||
aliases = {
|
|
||||||
co = "pr checkout";
|
|
||||||
};
|
|
||||||
http_unix_socket = "";
|
|
||||||
browser = "";
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "config for gh. Keep in mind, empty values refer to using environment variables";
|
|
||||||
};
|
|
||||||
hosts = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
"github.com" = {
|
|
||||||
git_protocol = "ssh";
|
|
||||||
users = {
|
|
||||||
${config.mods.git.username} = "";
|
|
||||||
};
|
|
||||||
user = "${config.mods.git.username}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "hosts for gh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
useDefaultPackages = lib.mkOption {
|
useDefaultPackages = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
|
|
@ -139,8 +39,8 @@ in {
|
||||||
description = "Use default base packages (only additionalPackages are installed if false)";
|
description = "Use default base packages (only additionalPackages are installed if false)";
|
||||||
};
|
};
|
||||||
additionalPackages = lib.mkOption {
|
additionalPackages = lib.mkOption {
|
||||||
default = [];
|
default = [ ];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = "Additional packages to be installed";
|
description = "Additional packages to be installed";
|
||||||
};
|
};
|
||||||
|
|
@ -160,7 +60,7 @@ in {
|
||||||
ghc
|
ghc
|
||||||
haskellPackages.haskell-language-server
|
haskellPackages.haskell-language-server
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
haskell packages
|
haskell packages
|
||||||
|
|
@ -180,8 +80,9 @@ in {
|
||||||
default = with pkgs; [
|
default = with pkgs; [
|
||||||
typst
|
typst
|
||||||
tinymist
|
tinymist
|
||||||
|
ltex-ls
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
typst packages
|
typst packages
|
||||||
|
|
@ -202,7 +103,7 @@ in {
|
||||||
go
|
go
|
||||||
gopls
|
gopls
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
Go packages
|
Go packages
|
||||||
|
|
@ -219,8 +120,8 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
packages = lib.mkOption {
|
packages = lib.mkOption {
|
||||||
default = with pkgs; [rustup];
|
default = with pkgs; [ rustup ];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
Rust packages
|
Rust packages
|
||||||
|
|
@ -244,7 +145,7 @@ in {
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
nodePackages.prettier
|
nodePackages.prettier
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
TS/JS packages
|
TS/JS packages
|
||||||
|
|
@ -265,7 +166,7 @@ in {
|
||||||
zig
|
zig
|
||||||
zls
|
zls
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
zig packages
|
zig packages
|
||||||
|
|
@ -288,7 +189,7 @@ in {
|
||||||
jdt-language-server
|
jdt-language-server
|
||||||
temurin-jre-bin
|
temurin-jre-bin
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
Java packages
|
Java packages
|
||||||
|
|
@ -307,17 +208,15 @@ in {
|
||||||
packages = lib.mkOption {
|
packages = lib.mkOption {
|
||||||
default = with pkgs; [
|
default = with pkgs; [
|
||||||
#.!
|
#.!
|
||||||
(with dotnetCorePackages;
|
dotnet-sdk_8
|
||||||
combinePackages [
|
omnisharp-roslyn
|
||||||
sdk_8_0
|
|
||||||
sdk_9_0
|
|
||||||
])
|
|
||||||
csharpier
|
csharpier
|
||||||
netcoredbg
|
netcoredbg
|
||||||
|
#fsharp
|
||||||
fsharp
|
fsharp
|
||||||
fsautocomplete
|
fsautocomplete
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
C#/F# packages
|
C#/F# packages
|
||||||
|
|
@ -336,11 +235,10 @@ in {
|
||||||
packages = lib.mkOption {
|
packages = lib.mkOption {
|
||||||
default = with pkgs; [
|
default = with pkgs; [
|
||||||
bear
|
bear
|
||||||
gdb
|
|
||||||
gcc
|
gcc
|
||||||
clang-tools
|
clang-tools
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
C/C++ packages
|
C/C++ packages
|
||||||
|
|
@ -363,7 +261,7 @@ in {
|
||||||
python312Packages.python-lsp-ruff
|
python312Packages.python-lsp-ruff
|
||||||
python312Packages.python-lsp-black
|
python312Packages.python-lsp-black
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
python packages
|
python packages
|
||||||
|
|
@ -389,7 +287,7 @@ in {
|
||||||
#json
|
#json
|
||||||
jq
|
jq
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
packages for said filetypes
|
packages for said filetypes
|
||||||
|
|
@ -410,7 +308,7 @@ in {
|
||||||
bash-language-server
|
bash-language-server
|
||||||
shfmt
|
shfmt
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
bash packages
|
bash packages
|
||||||
|
|
@ -432,7 +330,7 @@ in {
|
||||||
tailwindcss-language-server
|
tailwindcss-language-server
|
||||||
# html-tidy
|
# html-tidy
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
html/css packages
|
html/css packages
|
||||||
|
|
@ -453,31 +351,13 @@ in {
|
||||||
nodePackages.sql-formatter
|
nodePackages.sql-formatter
|
||||||
sqls
|
sqls
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
sql packages
|
sql packages
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
gleam = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables gleam.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
packages = lib.mkOption {
|
|
||||||
default = with pkgs; [gleam];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = ''
|
|
||||||
gleam packages
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
asm = {
|
asm = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -488,8 +368,8 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
packages = lib.mkOption {
|
packages = lib.mkOption {
|
||||||
default = with pkgs; [asm-lsp];
|
default = with pkgs; [ asm-lsp ];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
assembly packages
|
assembly packages
|
||||||
|
|
@ -500,7 +380,8 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config =
|
||||||
|
let
|
||||||
basePackages = with pkgs; [
|
basePackages = with pkgs; [
|
||||||
gitui
|
gitui
|
||||||
meson
|
meson
|
||||||
|
|
@ -513,46 +394,21 @@ in {
|
||||||
d-spy
|
d-spy
|
||||||
tmux
|
tmux
|
||||||
tmate
|
tmate
|
||||||
inputs.compose.packages.${system}.default
|
#editors
|
||||||
|
neovide
|
||||||
|
#fallback
|
||||||
|
vscodium
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
lib.mkIf config.mods.coding.enable (
|
lib.mkIf config.mods.coding.enable (
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
||||||
enable = true;
|
enable = true;
|
||||||
inherit (config.mods.stylix) colorscheme;
|
colorscheme = config.mods.stylix.colorscheme;
|
||||||
};
|
};
|
||||||
programs.vscode = lib.mkIf config.mods.coding.vscodium.enable {
|
home.packages =
|
||||||
enable = true;
|
with pkgs;
|
||||||
package = mkDashDefault pkgs.vscodium;
|
[ (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) ]
|
||||||
profiles.default.extensions = config.mods.coding.vscodium.extensions;
|
|
||||||
};
|
|
||||||
xdg.configFile = {
|
|
||||||
"neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) {
|
|
||||||
source =
|
|
||||||
(pkgs.formats.toml {}).generate "neovide"
|
|
||||||
config.mods.coding.neovide.config;
|
|
||||||
};
|
|
||||||
|
|
||||||
"gh/config.yml" = lib.mkIf config.mods.coding.gh.enable {
|
|
||||||
source =
|
|
||||||
(pkgs.formats.yaml {}).generate "config"
|
|
||||||
config.mods.coding.gh.config;
|
|
||||||
};
|
|
||||||
"gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable {
|
|
||||||
source =
|
|
||||||
(pkgs.formats.yaml {}).generate "hosts"
|
|
||||||
config.mods.coding.gh.hosts;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
(lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) neovide)
|
|
||||||
(lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox)
|
|
||||||
(lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop)
|
|
||||||
(lib.mkIf config.mods.coding.gh.enable gh)
|
|
||||||
]
|
|
||||||
++ config.mods.coding.additionalPackages
|
++ config.mods.coding.additionalPackages
|
||||||
++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages)
|
++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages)
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages)
|
++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages)
|
||||||
|
|
@ -568,8 +424,7 @@ in {
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages)
|
++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages)
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages)
|
++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages)
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages)
|
++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages)
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages)
|
++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages);
|
||||||
++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages);
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.containers = {
|
|
||||||
variant = lib.mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "podman";
|
|
||||||
type = lib.types.enum [
|
|
||||||
""
|
|
||||||
"podman"
|
|
||||||
"docker"
|
|
||||||
];
|
|
||||||
description = "Enables and configures a containerization solution: podman/docker";
|
|
||||||
};
|
|
||||||
podmanPackages = lib.mkOption {
|
|
||||||
default = with pkgs; [
|
|
||||||
podman-tui
|
|
||||||
podman-compose
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = "Podman packages";
|
|
||||||
};
|
|
||||||
dockerPackages = lib.mkOption {
|
|
||||||
default = with pkgs; [
|
|
||||||
docker-compose
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = "Docker packages";
|
|
||||||
};
|
|
||||||
combinedPackages = lib.mkOption {
|
|
||||||
default = with pkgs; [
|
|
||||||
dive
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = "Container packages";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.optionalAttrs (options ? environment.systemPackages) {
|
|
||||||
environment.systemPackages =
|
|
||||||
(lib.lists.optionals (
|
|
||||||
config.mods.containers.variant == "podman"
|
|
||||||
)
|
|
||||||
config.mods.containers.podmanPackages)
|
|
||||||
++ (lib.lists.optionals (
|
|
||||||
config.mods.containers.variant == "docker"
|
|
||||||
)
|
|
||||||
config.mods.containers.dockerPackages)
|
|
||||||
++ (lib.lists.optionals (
|
|
||||||
config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker"
|
|
||||||
)
|
|
||||||
config.mods.containers.combinedPackages);
|
|
||||||
virtualisation =
|
|
||||||
if (config.mods.containers.variant == "podman")
|
|
||||||
then {
|
|
||||||
containers.enable = true;
|
|
||||||
podman = {
|
|
||||||
enable = true;
|
|
||||||
dockerCompat = mkDashDefault true;
|
|
||||||
defaultNetwork.settings.dns_enabled = mkDashDefault true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else if (config.mods.containers.variant == "docker")
|
|
||||||
then {
|
|
||||||
containers.enable = true;
|
|
||||||
docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +1,40 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./acpid.nix
|
./acpid.nix
|
||||||
./anyrun.nix
|
./base_packages.nix
|
||||||
./basePackages.nix
|
|
||||||
./bluetooth.nix
|
./bluetooth.nix
|
||||||
./browser
|
|
||||||
./clam.nix
|
|
||||||
./coding.nix
|
./coding.nix
|
||||||
./containers.nix
|
|
||||||
./drives.nix
|
./drives.nix
|
||||||
./fancontrol.nix
|
./firefox.nix
|
||||||
./fastfetch.nix
|
|
||||||
./fish.nix
|
./fish.nix
|
||||||
./flatpak.nix
|
./flatpak.nix
|
||||||
./gaming.nix
|
./gaming.nix
|
||||||
./gdm.nix
|
./gdm.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
./gnome.nix
|
./gnome.nix
|
||||||
./gnomeServices.nix
|
./gnome_services.nix
|
||||||
./gpu.nix
|
./gpu.nix
|
||||||
./greetd.nix
|
./greetd.nix
|
||||||
./homePackages.nix
|
./home_packages.nix
|
||||||
./hypr
|
./hyprland
|
||||||
./ironbar.nix
|
|
||||||
./kde.nix
|
./kde.nix
|
||||||
./kdeConnect.nix
|
./kde_connect.nix
|
||||||
./keepassxc.nix
|
./keepassxc.nix
|
||||||
./kitty.nix
|
./kitty.nix
|
||||||
./media.nix
|
./media.nix
|
||||||
./mime.nix
|
|
||||||
./ncspot.nix
|
./ncspot.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./niri.nix
|
|
||||||
./onedrive.nix
|
|
||||||
./oxi
|
./oxi
|
||||||
./piper.nix
|
./piper.nix
|
||||||
./plymouth.nix
|
./podman.nix
|
||||||
./printing.nix
|
./printing.nix
|
||||||
./scripts.nix
|
./scripts.nix
|
||||||
./sddm.nix
|
./sddm.nix
|
||||||
./sops.nix
|
./sops.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./streamcontroller.nix
|
|
||||||
./stylix.nix
|
./stylix.nix
|
||||||
./superfreq.nix
|
|
||||||
./supersonic.nix
|
|
||||||
./sway.nix
|
|
||||||
./teams.nix
|
./teams.nix
|
||||||
./virtmanager.nix
|
./virtualbox.nix
|
||||||
./wm.nix
|
|
||||||
./xkb.nix
|
./xkb.nix
|
||||||
./xone.nix
|
./xone.nix
|
||||||
./yazi
|
./yazi
|
||||||
|
|
|
||||||
|
|
@ -3,60 +3,49 @@
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
options.mods.drives = {
|
let
|
||||||
variant = lib.mkOption {
|
|
||||||
default = "manual";
|
driveModule = lib.types.submodule {
|
||||||
example = "disko";
|
options = {
|
||||||
type = with lib.types; (enum [
|
name = lib.mkOption {
|
||||||
"manual"
|
type = lib.types.str;
|
||||||
"disko"
|
|
||||||
]);
|
|
||||||
description = ''
|
description = ''
|
||||||
Disk configuration type, either "manual" for regular NixOS disk configuration,
|
The path of the drive.
|
||||||
or "disko" for using disko to automatically format your drives.
|
Note that a / is already added at the beginning.
|
||||||
'';
|
'';
|
||||||
|
default = "";
|
||||||
|
example = "drive2";
|
||||||
};
|
};
|
||||||
useSwap = lib.mkOption {
|
drive = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.anything;
|
||||||
|
description = "The attrs of the drive";
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
device = "/dev/disk/by-label/DRIVE2";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [
|
||||||
|
"noatime"
|
||||||
|
"nodiratime"
|
||||||
|
"discard"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
drives = {
|
||||||
|
useSwap = {
|
||||||
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = ''
|
description = ''
|
||||||
Use swap in drive.
|
Use default drive config
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
useEncryption = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables encryption.
|
|
||||||
!WARNING!
|
|
||||||
You need your root drive to be named root exactly!
|
|
||||||
Otherwise there will not be a root crypt!
|
|
||||||
!WARNING!
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
homeAndRootFsTypes = lib.mkOption {
|
|
||||||
default = "ext4";
|
|
||||||
example = "btrfs";
|
|
||||||
type = with lib.types; (enum [
|
|
||||||
"btrfs"
|
|
||||||
"ext2"
|
|
||||||
"ext3"
|
|
||||||
"ext4"
|
|
||||||
"exfat"
|
|
||||||
"f2fs"
|
|
||||||
"fat8"
|
|
||||||
"fat16"
|
|
||||||
"fat32"
|
|
||||||
"ntfs"
|
|
||||||
"xfs"
|
|
||||||
"zfs"
|
|
||||||
]);
|
|
||||||
description = ''
|
|
||||||
Filesystem for the home and root partitions.
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
defaultDrives = {
|
defaultDrives = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -64,32 +53,13 @@
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = ''
|
description = ''
|
||||||
Use default drive config.
|
Use default drive config
|
||||||
|
|
||||||
- Manual variant
|
|
||||||
This config expects 4 different partitions on a single drive:
|
|
||||||
- boot partition with BOOT label and vfat format (filesystem configurable)
|
|
||||||
- swap partition with SWAP label
|
|
||||||
- root partition with ROOT label and ext4 format (filesystem configurable)
|
|
||||||
- home partition with HOME label and ext4 format (filesystem configurable)
|
|
||||||
- gpt disk format
|
|
||||||
|
|
||||||
NOTE: Any different configuration must be done manually with this turned off.
|
|
||||||
|
|
||||||
- Disko variant
|
|
||||||
This config creates 4 different partitions on a single drive:
|
|
||||||
- boot partition with 1GB size and vfat format
|
|
||||||
- swap partition with 32GB (size configurable)
|
|
||||||
- root partition with 30% size and ext4 format (size and filesystem configurable)
|
|
||||||
- home partition with 70%~ size and ext4 format (size and filesystem configurable)
|
|
||||||
- gpt disk format
|
|
||||||
|
|
||||||
NOTE: Any different configuration must be done manually with this turned off.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraDrives = lib.mkOption {
|
extraDrives = lib.mkOption {
|
||||||
default = [
|
default = [
|
||||||
|
|
||||||
];
|
];
|
||||||
example = [
|
example = [
|
||||||
{
|
{
|
||||||
|
|
@ -105,93 +75,32 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
# TODO: how to make this work
|
||||||
|
# type = with lib.types; listOf (attrsOf driveModule);
|
||||||
type = with lib.types; listOf (attrsOf anything);
|
type = with lib.types; listOf (attrsOf anything);
|
||||||
description = ''
|
description = ''
|
||||||
Extra drives to add.
|
Extra drives to add.
|
||||||
Please ensure to add variant compliant attrsets (manual/disko).
|
|
||||||
(The example is for manual variant, here an example for disko):
|
|
||||||
```nix
|
|
||||||
drive2 = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
|
|
||||||
device = "/dev/nvme1n1"
|
|
||||||
type = "disk";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
drive2 = {
|
|
||||||
start = "0%";
|
|
||||||
end = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/drive2";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"nodiratime"
|
|
||||||
"discard"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
```
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
disko = {
|
|
||||||
defaultDiskId = lib.mkOption {
|
|
||||||
default = "TODO";
|
|
||||||
example = "/dev/nvme0n1";
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "The name, ID, UUID or similar for the default drive.";
|
|
||||||
};
|
|
||||||
rootAmount = lib.mkOption {
|
|
||||||
default = 30;
|
|
||||||
example = 40;
|
|
||||||
type = lib.types.number;
|
|
||||||
description = "The percentage of the disk for root. (Home will take up the rest) (Only for disko)";
|
|
||||||
};
|
|
||||||
swapAmount = lib.mkOption {
|
|
||||||
default = 32;
|
|
||||||
example = 64;
|
|
||||||
type = lib.types.number;
|
|
||||||
description = "The amount of swap to use. (Only for disko)";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.optionalAttrs (options ? fileSystems) {
|
config = (
|
||||||
boot.initrd.luks.devices = lib.mkIf (config.mods.drives.variant == "manual" && config.mods.drives.useEncryption) (
|
lib.optionalAttrs (options ? fileSystems) {
|
||||||
|
fileSystems =
|
||||||
builtins.listToAttrs (
|
builtins.listToAttrs (
|
||||||
map (
|
map (
|
||||||
|
{ name, drive }:
|
||||||
{
|
{
|
||||||
name,
|
|
||||||
drive,
|
|
||||||
}: {
|
|
||||||
cryptstorage.device = lib.mkIf (name != "root") drive?device;
|
|
||||||
cryptoroot.device = lib.mkIf (name == "root") drive?device;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
config.mods.drives.extraDrives
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
fileSystems = lib.mkIf (config.mods.drives.variant == "manual" && !config.conf.wsl) (
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map (
|
|
||||||
{
|
|
||||||
name,
|
|
||||||
drive,
|
|
||||||
}: {
|
|
||||||
name = "/" + name;
|
name = "/" + name;
|
||||||
value = drive;
|
value = drive;
|
||||||
}
|
}
|
||||||
)
|
) config.mods.drives.extraDrives
|
||||||
config.mods.drives.extraDrives
|
|
||||||
)
|
)
|
||||||
// (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
|
// (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-label/ROOT";
|
device = "/dev/disk/by-label/ROOT";
|
||||||
fsType = config.mods.drives.homeAndRootFsTypes;
|
fsType = "btrfs";
|
||||||
options = [
|
options = [
|
||||||
"noatime"
|
"noatime"
|
||||||
"nodiratime"
|
"nodiratime"
|
||||||
|
|
@ -212,101 +121,16 @@
|
||||||
|
|
||||||
"/home" = {
|
"/home" = {
|
||||||
device = "/dev/disk/by-label/HOME";
|
device = "/dev/disk/by-label/HOME";
|
||||||
fsType = config.mods.drives.homeAndRootFsTypes;
|
fsType = "btrfs";
|
||||||
options = [
|
options = [
|
||||||
"noatime"
|
"noatime"
|
||||||
"nodiratime"
|
"nodiratime"
|
||||||
"discard"
|
"discard"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
# TODO make this convert to choice of drives -> thanks to funny types this doesn't work...
|
||||||
|
swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual" && !config.conf.wsl) [
|
|
||||||
{device = "/dev/disk/by-label/SWAP";}
|
|
||||||
];
|
|
||||||
|
|
||||||
disko.devices = lib.mkIf (config.mods.drives.variant == "disko") {
|
|
||||||
disk =
|
|
||||||
{
|
|
||||||
main = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
|
|
||||||
device = "${config.mods.drives.disko.defaultDiskId}";
|
|
||||||
type = "disk";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
root = {
|
|
||||||
start = "${
|
|
||||||
if config.mods.drives.useSwap
|
|
||||||
then builtins.toString config.mods.drives.disko.swapAmount
|
|
||||||
else builtins.toString 1
|
|
||||||
}G";
|
|
||||||
end = "${builtins.toString config.mods.drives.disko.rootAmount}%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = config.mods.drives.homeAndRootFsTypes;
|
|
||||||
mountpoint = "/";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"nodiratime"
|
|
||||||
"discard"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
plainSwap = {
|
|
||||||
start = "1G";
|
|
||||||
end = "33G";
|
|
||||||
content = {
|
|
||||||
type = "swap";
|
|
||||||
discardPolicy = "both";
|
|
||||||
resumeDevice = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
boot = {
|
|
||||||
start = "0G";
|
|
||||||
end = "1G";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
mountOptions = [
|
|
||||||
"rw"
|
|
||||||
"fmask=0022"
|
|
||||||
"dmask=0022"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
start = "${builtins.toString config.mods.drives.disko.rootAmount}%";
|
|
||||||
end = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = config.mods.drives.homeAndRootFsTypes;
|
|
||||||
mountpoint = "/home";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"nodiratime"
|
|
||||||
"discard"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// builtins.listToAttrs (
|
|
||||||
map (
|
|
||||||
{
|
|
||||||
name,
|
|
||||||
drive,
|
|
||||||
}: {
|
|
||||||
name = "/" + name;
|
|
||||||
value = drive;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
config.mods.drives.extraDrives
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.fancontrol = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables fancontrol-gui with needed drivers";
|
|
||||||
};
|
|
||||||
forceId = lib.mkOption {
|
|
||||||
default = null;
|
|
||||||
example = "force_id=0x8628";
|
|
||||||
type = with lib.types; nullOr str;
|
|
||||||
description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.fancontrol.enable (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
home.packages = [pkgs.fancontrol-gui];
|
|
||||||
}
|
|
||||||
// (lib.optionalAttrs (options ? boot.kernelModules) {
|
|
||||||
boot = {
|
|
||||||
kernelParams = ["acpi_enforce_resources=lax"];
|
|
||||||
extraModulePackages = with config.boot.kernelPackages; [liquidtux it87];
|
|
||||||
kernelModules = ["v4l2loopback" "it87"];
|
|
||||||
extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) ''
|
|
||||||
options it87 ${config.mods.fancontrol.forceId}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.dashfetch = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "A custom configuration for fastfetch";
|
|
||||||
};
|
|
||||||
modules = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"title"
|
|
||||||
"separator"
|
|
||||||
{
|
|
||||||
type = "os";
|
|
||||||
key = "OS";
|
|
||||||
format = "DashNix ({name} {version})";
|
|
||||||
}
|
|
||||||
"host"
|
|
||||||
"kernel"
|
|
||||||
"uptime"
|
|
||||||
"packages"
|
|
||||||
"shell"
|
|
||||||
"display"
|
|
||||||
"de"
|
|
||||||
"wm"
|
|
||||||
"wmtheme"
|
|
||||||
"theme"
|
|
||||||
"icons"
|
|
||||||
"font"
|
|
||||||
"cursor"
|
|
||||||
"terminal"
|
|
||||||
"terminalfont"
|
|
||||||
"cpu"
|
|
||||||
"gpu"
|
|
||||||
"memory"
|
|
||||||
"swap"
|
|
||||||
"disk"
|
|
||||||
"localip"
|
|
||||||
"battery"
|
|
||||||
"poweradapter"
|
|
||||||
"locale"
|
|
||||||
"break"
|
|
||||||
"colors"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf anything;
|
|
||||||
description = "modules for fastfetch";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.optionalAttrs (options ? home.packages) {
|
|
||||||
xdg.configFile."fastfetch/config.jsonc" = lib.mkIf config.mods.dashfetch.enable {
|
|
||||||
source =
|
|
||||||
(pkgs.formats.json {}).generate "config.jsonc"
|
|
||||||
{
|
|
||||||
"$schema" = "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json";
|
|
||||||
logo = {
|
|
||||||
type = "kitty";
|
|
||||||
source = ../../assets/logo2.png;
|
|
||||||
width = 35;
|
|
||||||
padding = {
|
|
||||||
top = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
modules = config.mods.dashfetch.modules;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
84
modules/programs/firefox.nix
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods.firefox = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables firefox";
|
||||||
|
};
|
||||||
|
configuration = lib.mkOption {
|
||||||
|
default = {
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
DisablePocket = true;
|
||||||
|
DisplayBookmarksToolbar = "never";
|
||||||
|
DisplayMenuBar = "default-off";
|
||||||
|
CaptivePortal = false;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxAccounts = false;
|
||||||
|
NoDefaultBookmarks = true;
|
||||||
|
OfferToSaveLogins = false;
|
||||||
|
OfferToSaveLoginsDefault = false;
|
||||||
|
PasswordManagerEnabled = false;
|
||||||
|
FirefoxHome = {
|
||||||
|
Search = true;
|
||||||
|
Pocket = false;
|
||||||
|
Snippets = false;
|
||||||
|
TopSites = true;
|
||||||
|
Highlights = false;
|
||||||
|
};
|
||||||
|
UserMessaging = {
|
||||||
|
ExtensionRecommendations = false;
|
||||||
|
SkipOnboarding = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
example = { };
|
||||||
|
type = with lib.types; attrsOf anything;
|
||||||
|
description = "Firefox policy configuration";
|
||||||
|
};
|
||||||
|
extensions = lib.mkOption {
|
||||||
|
default = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
ublock-origin
|
||||||
|
darkreader
|
||||||
|
privacy-badger
|
||||||
|
vimium
|
||||||
|
keepassxc-browser
|
||||||
|
i-dont-care-about-cookies
|
||||||
|
tokyo-night-v2
|
||||||
|
];
|
||||||
|
example = [ ];
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
description = "Firefox extensions (from nur)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.firefox.enable (
|
||||||
|
lib.optionalAttrs (options ? programs.firefox.profiles) {
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
policies = config.mods.firefox.configuration;
|
||||||
|
profiles.${config.conf.username} = {
|
||||||
|
isDefault = true;
|
||||||
|
id = 0;
|
||||||
|
extensions = config.mods.firefox.extensions;
|
||||||
|
};
|
||||||
|
profiles."special" = {
|
||||||
|
isDefault = false;
|
||||||
|
id = 1;
|
||||||
|
extensions = config.mods.firefox.extensions;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,14 +1,10 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
{
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
in {
|
|
||||||
options.mods.fish = {
|
options.mods.fish = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -34,8 +30,7 @@ in {
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellInit =
|
shellInit =
|
||||||
if config.mods.fish.useDefaultConfig
|
if config.mods.fish.useDefaultConfig then
|
||||||
then
|
|
||||||
''
|
''
|
||||||
if status is-interactive
|
if status is-interactive
|
||||||
# Commands to run in interactive sessions can go here
|
# Commands to run in interactive sessions can go here
|
||||||
|
|
@ -46,21 +41,17 @@ in {
|
||||||
# Utility functions for zoxide.
|
# Utility functions for zoxide.
|
||||||
#
|
#
|
||||||
|
|
||||||
export NIX_PATH="$NIX_PATH:${config.conf.nixosConfigPath}"
|
export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}"
|
||||||
|
|
||||||
set EDITOR "neovide --no-fork"
|
set EDITOR "neovide --no-fork"
|
||||||
|
|
||||||
alias rebuild='nh os switch -- --accept-flake-config'
|
alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}'
|
||||||
alias update='nix flake update --flake $FLAKE --accept-flake-config'
|
|
||||||
alias gcli='gh'
|
|
||||||
abbr --add ls 'lsd'
|
abbr --add ls 'lsd'
|
||||||
abbr --add :q 'exit'
|
abbr --add :q 'exit'
|
||||||
abbr --add gh 'git push origin'
|
abbr --add gh 'git push origin'
|
||||||
abbr --add gu 'git push upstream'
|
|
||||||
abbr --add gl 'git pull origin'
|
abbr --add gl 'git pull origin'
|
||||||
abbr --add gm 'git commit -m'
|
abbr --add gm 'git commit -m'
|
||||||
abbr --add ga "git add -A"
|
abbr --add ga "git add -A"
|
||||||
abbr --add gc "git commit --amend --no-edit"
|
|
||||||
abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20'
|
abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20'
|
||||||
abbr --add s "kitty +kitten ssh"
|
abbr --add s "kitty +kitten ssh"
|
||||||
abbr --add zl 'z "" '
|
abbr --add zl 'z "" '
|
||||||
|
|
@ -70,13 +61,6 @@ in {
|
||||||
abbr --add cat 'bat'
|
abbr --add cat 'bat'
|
||||||
abbr --add find 'fd'
|
abbr --add find 'fd'
|
||||||
abbr --add rm 'rip'
|
abbr --add rm 'rip'
|
||||||
abbr --add cp 'cpz'
|
|
||||||
abbr --add cd 'z'
|
|
||||||
abbr --add y 'yazi'
|
|
||||||
|
|
||||||
set fish_color_autosuggestion '${scheme.base07}'
|
|
||||||
set fish_color_param '${scheme.base06}'
|
|
||||||
set fish_color_operator '${scheme.base0E}'
|
|
||||||
|
|
||||||
set fish_greeting
|
set fish_greeting
|
||||||
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
||||||
|
|
@ -183,7 +167,8 @@ in {
|
||||||
direnv hook fish | source
|
direnv hook fish | source
|
||||||
''
|
''
|
||||||
+ config.mods.fish.additionalConfig
|
+ config.mods.fish.additionalConfig
|
||||||
else config.mods.fish.additionalConfig;
|
else
|
||||||
|
config.mods.fish.additionalConfig;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,39 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.flatpak = {
|
options.mods.flatpak = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = true;
|
||||||
example = true;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables the flatpak package manager";
|
description = "Enables the flatpak package manager";
|
||||||
};
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ ];
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = "Flatpak packages";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.flatpak.enable (
|
config = lib.mkIf config.mods.flatpak.enable (
|
||||||
lib.optionalAttrs (options ? environment.systemPackages) {
|
lib.optionalAttrs (options ? services.flatpak.remote) {
|
||||||
environment.systemPackages = [pkgs.flatpak];
|
environment.systemPackages = [ pkgs.flatpak ];
|
||||||
|
services.flatpak.remotes = lib.mkOptionDefault [
|
||||||
|
{
|
||||||
|
name = "flathub-stable";
|
||||||
|
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
services.flatpak.uninstallUnmanaged = true;
|
||||||
|
}
|
||||||
|
// lib.optionalAttrs (options ? services.flatpak.packages) {
|
||||||
|
services.flatpak.packages = [
|
||||||
|
# fallback if necessary, but generally avoided as nix is superior :)
|
||||||
|
# default flatseal installation since flatpak permissions are totally not a broken idea
|
||||||
|
"com.github.tchx84.Flatseal"
|
||||||
|
] ++ config.mods.flatpak.additional_packages;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.gaming = {
|
options.mods.gaming = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -15,33 +15,22 @@
|
||||||
};
|
};
|
||||||
tools = lib.mkOption {
|
tools = lib.mkOption {
|
||||||
default = with pkgs; [
|
default = with pkgs; [
|
||||||
protonplus
|
|
||||||
gamescope
|
|
||||||
gamemode
|
gamemode
|
||||||
steam
|
steam
|
||||||
# TODO broken
|
lutris
|
||||||
# lutris
|
wine
|
||||||
wineWowPackages.stable
|
|
||||||
adwsteamgtk
|
adwsteamgtk
|
||||||
heroic
|
heroic
|
||||||
mangohud
|
|
||||||
nexusmods-app
|
|
||||||
steamtinkerlaunch
|
|
||||||
winetricks
|
|
||||||
];
|
];
|
||||||
example = [];
|
example = [ ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = "Install gaming related packages";
|
description = "Install gaming related packages";
|
||||||
};
|
};
|
||||||
kernel = lib.mkOption {
|
kernel = lib.mkOption {
|
||||||
default = false;
|
default = true;
|
||||||
example = true;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = ''
|
description = "Whether to use the xanmod kernel";
|
||||||
Whether to use the CachyOS kernel.
|
|
||||||
WARNING: This is a manual compiled kernel!
|
|
||||||
(Please also ensure you use your own input hash for the source as the compilation can often fail due to temporary broken changes.)
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
steam = lib.mkOption {
|
steam = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -55,91 +44,42 @@
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Whether to use gamemode";
|
description = "Whether to use gamemode";
|
||||||
};
|
};
|
||||||
pinCores = lib.mkOption {
|
gpu_optimization = lib.mkOption {
|
||||||
default = "false";
|
|
||||||
example = "true";
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Pin Cores gamemode config";
|
|
||||||
};
|
|
||||||
parkCores = lib.mkOption {
|
|
||||||
default = "false";
|
|
||||||
example = "true";
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Park Cores gamemode config";
|
|
||||||
};
|
|
||||||
gpuOptimization = lib.mkOption {
|
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Whether to use GPU performance setting. NOTE: this is at your own risk!";
|
description = "Whether to use GPU performance setting. NOTE: this is at your own risk!";
|
||||||
};
|
};
|
||||||
gpuDevice = lib.mkOption {
|
gpu_device = lib.mkOption {
|
||||||
default = 0;
|
default = 0;
|
||||||
example = 1;
|
example = 1;
|
||||||
type = lib.types.int;
|
type = lib.types.int;
|
||||||
description = "Your gpu device.(Physical id of lshw)";
|
description = "Your gpu device.(Physical id of lshw)";
|
||||||
};
|
};
|
||||||
scheduler = lib.mkOption {
|
|
||||||
default = "scx_rustland";
|
|
||||||
example = "scx_rusty";
|
|
||||||
type = with lib.types;
|
|
||||||
nullOr (enum [
|
|
||||||
"scx_bpfland"
|
|
||||||
"scx_chaos"
|
|
||||||
"scx_cosmos"
|
|
||||||
"scx_central"
|
|
||||||
"scx_flash"
|
|
||||||
"scx_flatcg"
|
|
||||||
"scx_lavd"
|
|
||||||
"scx_layered"
|
|
||||||
"scx_mitosis"
|
|
||||||
"scx_nest"
|
|
||||||
"scx_p2dq"
|
|
||||||
"scx_pair"
|
|
||||||
"scx_prev"
|
|
||||||
"scx_qmap"
|
|
||||||
"scx_rlfifo"
|
|
||||||
"scx_rustland"
|
|
||||||
"scx_rusty"
|
|
||||||
"scx_sdt"
|
|
||||||
"scx_simple"
|
|
||||||
"scx_tickless"
|
|
||||||
"scx_userland"
|
|
||||||
"scx_wd40"
|
|
||||||
]);
|
|
||||||
description = "Scheduler to use, null disables this";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.gaming.enable (
|
config = lib.mkIf config.mods.gaming.enable (
|
||||||
lib.optionalAttrs (options ? environment.systemPackages) {
|
lib.optionalAttrs (options ? environment.systemPackages) {
|
||||||
environment.systemPackages = config.mods.gaming.tools;
|
environment.systemPackages = config.mods.gaming.tools;
|
||||||
boot.kernelPackages = lib.mkForce pkgs.cachyosKernels.linuxPackages-cachyos-latest;
|
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_xanmod_latest;
|
||||||
services.scx = lib.mkIf (config.mods.gaming.scheduler != null) {
|
|
||||||
enable = true;
|
|
||||||
inherit (config.mods.gaming) scheduler;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
steam.enable = mkDashDefault config.mods.gaming.steam;
|
steam.enable = config.mods.gaming.steam;
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
gamemode = {
|
gamemode = {
|
||||||
|
enableRenice = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
desiredgov = mkDashDefault "performance";
|
governor = "performance";
|
||||||
};
|
};
|
||||||
cpu = {
|
gpu = lib.mkIf config.mods.gaming.gpu_optimization {
|
||||||
pin_cores = mkDashDefault config.mods.gaming.pinCores;
|
apply_gpu_optimisations = "accept-responsibility";
|
||||||
park_cores = mkDashDefault config.mods.gaming.parkCores;
|
gpu_device = config.mods.gaming.gpu_device;
|
||||||
};
|
amd_performance_level = "high";
|
||||||
gpu = lib.mkIf config.mods.gaming.gpuOptimization {
|
nv_powermizer_mode = 1;
|
||||||
apply_gpu_optimisations = mkDashDefault "accept-responsibility";
|
|
||||||
gpu_device = mkDashDefault config.mods.gaming.gpuDevice;
|
|
||||||
amd_performance_level = mkDashDefault "high";
|
|
||||||
nv_powermizer_mode = mkDashDefault 1;
|
|
||||||
};
|
};
|
||||||
custom = {
|
custom = {
|
||||||
start = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations activated'";
|
start = "notify-send -a 'Gamemode' 'Optimizations activated'";
|
||||||
end = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations deactivated'";
|
end = "notify-send -a 'Gamemode' 'Optimizations deactivated'";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
options,
|
options,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.gdm = {
|
options.mods.gdm = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -12,8 +13,8 @@
|
||||||
description = "Enables the gdm displayManager";
|
description = "Enables the gdm displayManager";
|
||||||
};
|
};
|
||||||
extraOptions = lib.mkOption {
|
extraOptions = lib.mkOption {
|
||||||
default = {};
|
default = { };
|
||||||
example = {};
|
example = { };
|
||||||
type = with lib.types; attrsOf anything;
|
type = with lib.types; attrsOf anything;
|
||||||
description = "Extra options to be applied to the gnome config";
|
description = "Extra options to be applied to the gnome config";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,63 +2,68 @@
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.git = {
|
options.mods.git = {
|
||||||
username = lib.mkOption {
|
username = lib.mkOption {
|
||||||
default = "";
|
default = "DashieTM";
|
||||||
example = "globi";
|
example = "globi";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Git user name";
|
description = "Git user name";
|
||||||
};
|
};
|
||||||
email = lib.mkOption {
|
email = lib.mkOption {
|
||||||
default = "";
|
default = "fabio.lenherr@gmail.com";
|
||||||
example = "globi@globus.glob";
|
example = "globi@globus.glob";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Git email";
|
description = "Git email";
|
||||||
};
|
};
|
||||||
additionalConfig = lib.mkOption {
|
ssh_config = lib.mkOption {
|
||||||
default = {
|
default = ''
|
||||||
|
Host github.com
|
||||||
|
${
|
||||||
|
if (config ? sops.secrets && config.sops.secrets ? hub.path) then
|
||||||
|
"IdentityFile ${config.sops.secrets.hub.path}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
}
|
||||||
|
Host gitlab.com
|
||||||
|
${
|
||||||
|
if (config ? sops.secrets && config.sops.secrets ? lab.path) then
|
||||||
|
"IdentityFile ${config.sops.secrets.lab.path}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
}
|
||||||
|
Host dashie.org
|
||||||
|
${
|
||||||
|
if (config ? sops.secrets && config.sops.secrets ? dashie.path) then
|
||||||
|
"IdentityFile ${config.sops.secrets.dashie.path}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
example = "";
|
||||||
|
type = lib.types.lines;
|
||||||
|
description = "ssh configuration (keys for git)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = (
|
||||||
|
lib.optionalAttrs (options ? programs.git && options ? home.file) {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = config.mods.git.username;
|
||||||
|
userEmail = config.mods.git.email;
|
||||||
|
extraConfig = {
|
||||||
merge = {
|
merge = {
|
||||||
tool = "nvimdiff";
|
tool = "nvimdiff";
|
||||||
};
|
};
|
||||||
diff = {
|
diff = {
|
||||||
tool = "nvimdiff";
|
tool = "nvimdiff";
|
||||||
};
|
};
|
||||||
pull.rebase = true;
|
|
||||||
};
|
};
|
||||||
example = {
|
|
||||||
pull.rebase = false;
|
|
||||||
};
|
};
|
||||||
type = with lib.types; attrsOf anything;
|
home.file.".ssh/config".text = config.mods.git.ssh_config;
|
||||||
description = "Additional git config";
|
|
||||||
};
|
|
||||||
sshConfig = lib.mkOption {
|
|
||||||
default = "";
|
|
||||||
example = ''
|
|
||||||
Host github.com
|
|
||||||
${
|
|
||||||
if (config ? sops.secrets && config.sops.secrets ? hub.path)
|
|
||||||
then "IdentityFile ${config.sops.secrets.hub.path}"
|
|
||||||
else ""
|
|
||||||
}
|
}
|
||||||
'';
|
);
|
||||||
type = lib.types.lines;
|
|
||||||
description = "ssh configuration (keys for git)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.optionalAttrs (options ? programs.git && options ? home.file) {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
settings =
|
|
||||||
{
|
|
||||||
user = {
|
|
||||||
name = config.mods.git.username;
|
|
||||||
inherit (config.mods.git) email;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// config.mods.git.additionalConfig;
|
|
||||||
};
|
|
||||||
home.file.".ssh/config".text = config.mods.git.sshConfig;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.gnome = {
|
options.mods.gnome = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -19,20 +20,21 @@
|
||||||
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
|
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
|
||||||
};
|
};
|
||||||
extraOptions = lib.mkOption {
|
extraOptions = lib.mkOption {
|
||||||
default = {};
|
default = { };
|
||||||
example = {};
|
example = { };
|
||||||
type = with lib.types; attrsOf anything;
|
type = with lib.types; attrsOf anything;
|
||||||
description = "Extra options to be applied to the gnome config";
|
description = "Extra options to be applied to the gnome config";
|
||||||
};
|
};
|
||||||
extraDconf = lib.mkOption {
|
extraDconf = lib.mkOption {
|
||||||
default = {};
|
default = { };
|
||||||
example = {};
|
example = { };
|
||||||
type = with lib.types; attrsOf anything;
|
type = with lib.types; attrsOf anything;
|
||||||
description = "Extra options to be applied to the dconf config";
|
description = "Extra options to be applied to the dconf config";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config =
|
||||||
|
let
|
||||||
defaultExtensions = with pkgs.gnomeExtensions; [
|
defaultExtensions = with pkgs.gnomeExtensions; [
|
||||||
blur-my-shell
|
blur-my-shell
|
||||||
dash-to-dock
|
dash-to-dock
|
||||||
|
|
@ -47,7 +49,7 @@
|
||||||
desktopManager.gnome.enable = true;
|
desktopManager.gnome.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// lib.mkIf config.mods.gnome.useDefaultOptions {environment.systemPackages = defaultExtensions;}
|
// lib.mkIf config.mods.gnome.useDefaultOptions { environment.systemPackages = defaultExtensions; }
|
||||||
// {
|
// {
|
||||||
services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions;
|
services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions;
|
||||||
}
|
}
|
||||||
|
|
@ -61,11 +63,6 @@
|
||||||
disable-user-extensions = false;
|
disable-user-extensions = false;
|
||||||
enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions;
|
enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions;
|
||||||
};
|
};
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
cursor-theme = config.mods.stylix.cursor.name;
|
|
||||||
cursor-size = config.mods.stylix.cursor.size;
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,81 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods = {
|
|
||||||
gnomeServices.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables gnome services: keyring and settings daemon.
|
|
||||||
Note: Do not use these for environments which ship these functionalities by default: GNOME, KDE
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
nautilus.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables and configures Nautilus
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.gnomeServices.enable (
|
|
||||||
lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
|
|
||||||
programs.dconf = {
|
|
||||||
enable = true;
|
|
||||||
profiles.user.databases = [
|
|
||||||
{
|
|
||||||
settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
cursor-theme = config.mods.stylix.cursor.name;
|
|
||||||
cursor-size = lib.gvariant.mkInt32 config.mods.stylix.cursor.size;
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
environment.extraInit = ''
|
|
||||||
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh"
|
|
||||||
'';
|
|
||||||
services = {
|
|
||||||
# needed for GNOME services outside of GNOME Desktop
|
|
||||||
dbus.packages = with pkgs; [
|
|
||||||
gcr
|
|
||||||
gnome-settings-daemon
|
|
||||||
];
|
|
||||||
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
gvfs.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// lib.optionalAttrs (options ? home.packages) {
|
|
||||||
services.gnome-keyring.enable = true;
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
cursor-theme = config.mods.stylix.cursor.name;
|
|
||||||
cursor-size = config.mods.stylix.cursor.size;
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
packages = let
|
|
||||||
packages = with pkgs; [
|
|
||||||
gcr
|
|
||||||
nautilus
|
|
||||||
sushi
|
|
||||||
nautilus-python
|
|
||||||
nautilus-open-any-terminal
|
|
||||||
];
|
|
||||||
in
|
|
||||||
lib.mkIf config.mods.nautilus.enable packages;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
55
modules/programs/gnome_services.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
gnome_services.enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables gnome services: keyring and settings daemon.
|
||||||
|
Note: Do not use these for environments which ship these functionalities by default: GNOME, KDE
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
nautilus.enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables and configures Nautilus
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.gnome_services.enable (
|
||||||
|
lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
services = {
|
||||||
|
# needed for GNOME services outside of GNOME Desktop
|
||||||
|
dbus.packages = with pkgs; [
|
||||||
|
gcr
|
||||||
|
gnome.gnome-settings-daemon
|
||||||
|
];
|
||||||
|
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// lib.optionalAttrs (options ? home.packages) {
|
||||||
|
home.packages =
|
||||||
|
let
|
||||||
|
packages = with pkgs; [
|
||||||
|
nautilus
|
||||||
|
sushi
|
||||||
|
nautilus-python
|
||||||
|
];
|
||||||
|
in
|
||||||
|
lib.mkIf config.mods.nautilus.enable packages;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
options.mods.gpu = {
|
{
|
||||||
|
|
||||||
|
options.mods = {
|
||||||
|
gpu = {
|
||||||
nvidia.enable = lib.mkOption {
|
nvidia.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
|
|
@ -50,62 +52,53 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.optionalAttrs (options ? boot) {
|
|
||||||
boot = lib.mkIf config.mods.gpu.amdgpu.enable {
|
|
||||||
kernelModules = ["kvm-amd"];
|
|
||||||
initrd.kernelModules = ["amdgpu"];
|
|
||||||
kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"];
|
|
||||||
};
|
};
|
||||||
services.xserver.videoDrivers =
|
|
||||||
if config.mods.gpu.amdgpu.enable
|
|
||||||
then ["amdgpu"]
|
|
||||||
else if config.mods.gpu.nvidia.enable
|
|
||||||
then ["nvidia"]
|
|
||||||
else [];
|
|
||||||
|
|
||||||
environment.variables =
|
config =
|
||||||
if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable)
|
(lib.optionalAttrs (options ? hardware.graphics) {
|
||||||
then {
|
boot = lib.mkIf config.mods.amdgpu.enable {
|
||||||
RUSTICL_ENABLE = mkDashDefault "radeonsi";
|
kernelModules = [ "kvm-amd" ];
|
||||||
}
|
initrd.kernelModules = [ "amdgpu" ];
|
||||||
else {};
|
kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ];
|
||||||
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
nvidia = lib.mkIf config.mods.gpu.nvidia.enable {
|
graphics =
|
||||||
modesetting.enable = mkDashDefault true;
|
let
|
||||||
open = mkDashDefault true;
|
|
||||||
nvidiaSettings = mkDashDefault true;
|
|
||||||
package = mkDashDefault config.boot.kernelPackages.nvidiaPackages.beta;
|
|
||||||
};
|
|
||||||
graphics = let
|
|
||||||
amdPackages = [
|
amdPackages = [
|
||||||
(lib.mkIf (config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
|
(lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
|
||||||
(lib.mkIf (
|
(lib.mkIf (
|
||||||
config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable
|
config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable
|
||||||
)
|
) pkgs.intel-media-driver)
|
||||||
pkgs.intel-media-driver)
|
|
||||||
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
|
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
|
||||||
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libva)
|
(lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau)
|
||||||
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libva-vdpau-driver)
|
(lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers)
|
||||||
(lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa)
|
|
||||||
];
|
];
|
||||||
rocmPackages = [
|
rocmPackages = [
|
||||||
pkgs.rocmPackages.clr.icd
|
pkgs.rocmPackages.clr.icd
|
||||||
pkgs.mesa
|
pkgs.rocm-opencl-runtime
|
||||||
pkgs.mesa.opencl
|
|
||||||
pkgs.vulkan-loader
|
|
||||||
pkgs.vulkan-validation-layers
|
|
||||||
pkgs.vulkan-tools
|
|
||||||
pkgs.clinfo
|
|
||||||
];
|
];
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = mkDashDefault true;
|
enable32Bit = lib.mkDefault true;
|
||||||
extraPackages =
|
extraPackages =
|
||||||
amdPackages
|
amdPackages
|
||||||
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages);
|
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
})
|
||||||
|
// lib.optionalAttrs (options ? hardware.graphics) (
|
||||||
|
lib.mkIf config.mods.gpu.nvidia.enable {
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
# powerManagement.enable = false;
|
||||||
|
# powerManagement.finegrained = true;
|
||||||
|
open = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
};
|
};
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
{
|
{
|
||||||
mkDashDefault,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
options,
|
options,
|
||||||
system,
|
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods = {
|
options.mods = {
|
||||||
greetd = {
|
greetd = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -19,10 +18,7 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
monitor = lib.mkOption {
|
monitor = lib.mkOption {
|
||||||
default =
|
default = "${config.conf.monitor}";
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then (builtins.elemAt config.mods.wm.monitors 0).name
|
|
||||||
else "";
|
|
||||||
example = "eDP-1";
|
example = "eDP-1";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
@ -31,10 +27,7 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
scale = lib.mkOption {
|
scale = lib.mkOption {
|
||||||
default =
|
default = "${config.conf.scale}";
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then builtins.toString (builtins.elemAt config.mods.wm.monitors 0).scale
|
|
||||||
else "";
|
|
||||||
example = "1.5";
|
example = "1.5";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
@ -42,25 +35,8 @@
|
||||||
By default the scale of the main monitor is used.
|
By default the scale of the main monitor is used.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
greeterCommand = lib.mkOption {
|
|
||||||
default = "${
|
|
||||||
lib.getExe inputs.hyprland.packages.${system}.hyprland
|
|
||||||
} --config /etc/greetd/hyprgreet.conf";
|
|
||||||
example = "${
|
|
||||||
lib.getExe pkgs.cage
|
|
||||||
} -s -- ${lib.getExe pkgs.regreet}";
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "The compositor/greeter command to run";
|
|
||||||
};
|
|
||||||
resolution = lib.mkOption {
|
resolution = lib.mkOption {
|
||||||
default =
|
default = "auto";
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then let
|
|
||||||
resX = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).resolutionX;
|
|
||||||
resY = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).resolutionY;
|
|
||||||
refresh = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).refreshrate;
|
|
||||||
in "${resX}x${resY}@${refresh}"
|
|
||||||
else "";
|
|
||||||
example = "3440x1440@180";
|
example = "3440x1440@180";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
@ -68,57 +44,60 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
environments = lib.mkOption {
|
environments = lib.mkOption {
|
||||||
default = [
|
default = ''
|
||||||
(lib.mkIf config.mods.hypr.hyprland.enable inputs.hyprland.packages.${config.conf.system}.hyprland)
|
Hyprland
|
||||||
(lib.mkIf config.mods.niri.enable pkgs.niri)
|
'';
|
||||||
];
|
|
||||||
# no idea if these are written correctly
|
# no idea if these are written correctly
|
||||||
example = [
|
example = ''
|
||||||
pkgs.niri
|
Niri
|
||||||
pkgs.river-classic
|
River
|
||||||
pkgs.swayfx
|
'';
|
||||||
];
|
type = lib.types.lines;
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = ''
|
description = ''
|
||||||
List of environments that should be available in the login prompt.
|
List of environments that should be available in the login prompt.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
regreet = {
|
|
||||||
customSettings = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config =
|
||||||
inherit (config.conf) username;
|
let
|
||||||
|
username = config.conf.username;
|
||||||
|
session = {
|
||||||
|
command = "${
|
||||||
|
lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland
|
||||||
|
} --config /etc/greetd/hyprgreet.conf";
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
lib.mkIf config.mods.greetd.enable (
|
lib.mkIf config.mods.greetd.enable (
|
||||||
lib.optionalAttrs (options ? environment) {
|
lib.optionalAttrs (options ? environment) {
|
||||||
|
services.xserver.displayManager.session = [
|
||||||
|
{
|
||||||
|
manage = "desktop";
|
||||||
|
name = "Hyprland";
|
||||||
|
start = ''
|
||||||
|
${lib.getExe pkgs.hyprland} & waitPID=$!
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# greetd display manager
|
# greetd display manager
|
||||||
programs.hyprland.enable = mkDashDefault true;
|
programs.hyprland.enable = true;
|
||||||
services = {
|
services.greetd = {
|
||||||
displayManager.sessionPackages = config.mods.greetd.environments;
|
|
||||||
greetd = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
terminal.vt = mkDashDefault 1;
|
terminal.vt = 1;
|
||||||
default_session = {
|
default_session = session;
|
||||||
command = mkDashDefault config.mods.greetd.greeterCommand;
|
|
||||||
user = mkDashDefault username;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.etc."greetd/environments".text = config.mods.greetd.environments;
|
||||||
|
|
||||||
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
||||||
environment.etc."greetd/hyprgreet.conf".text = ''
|
environment.etc."greetd/hyprgreet.conf".text = ''
|
||||||
|
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||||
|
|
||||||
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
||||||
monitor=,disable
|
monitor=,disable
|
||||||
|
|
||||||
|
|
@ -128,37 +107,23 @@
|
||||||
force_no_accel = true
|
force_no_accel = true
|
||||||
}
|
}
|
||||||
|
|
||||||
misc {
|
cursor {
|
||||||
disable_splash_rendering = false
|
enable_hyprcursor = false
|
||||||
disable_hyprland_logo = true
|
}
|
||||||
disable_xdg_env_checks = true
|
|
||||||
disable_scale_notification = true
|
misc {
|
||||||
|
disable_splash_rendering = false
|
||||||
|
disable_hyprland_logo = false
|
||||||
}
|
}
|
||||||
|
|
||||||
env=STATE_DIR,var/cache/regreet
|
|
||||||
env=CACHE_DIR,var/cache/regreet
|
|
||||||
env=HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}
|
|
||||||
env=HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}
|
|
||||||
env=XCURSOR_THEME,${config.mods.stylix.cursor.name}
|
env=XCURSOR_THEME,${config.mods.stylix.cursor.name}
|
||||||
env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}
|
env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}
|
||||||
env=QT_QPA_PLATFORMTHEME,qt5ct
|
|
||||||
|
|
||||||
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css --config /home/${username}/.config/regreet/regreet.toml; hyprctl dispatch exit
|
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
# unlock GPG keyring on login
|
||||||
security.pam = {
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
services.greetd = {
|
|
||||||
enableGnomeKeyring = mkDashDefault true;
|
|
||||||
sshAgentAuth = mkDashDefault true;
|
|
||||||
};
|
|
||||||
sshAgentAuth.enable = mkDashDefault true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// lib.optionalAttrs (options ? home) {
|
|
||||||
xdg.configFile."regreet/regreet.toml".source =
|
|
||||||
(pkgs.formats.toml {}).generate "regreet"
|
|
||||||
config.mods.greetd.regreet.customSettings;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
options.mods.homePackages = {
|
|
||||||
useDefaultPackages = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Use default packages (will use additional_packages only if disabled)";
|
|
||||||
};
|
|
||||||
additionalPackages = lib.mkOption {
|
|
||||||
default = [];
|
|
||||||
example = [pkgs.flatpak];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = ''
|
|
||||||
Additional Home manager packages.
|
|
||||||
Will be installed regardless of default home manager packages are installed.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
specialPrograms = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
special program configuration to be added which require programs.something notation.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
specialServices = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
special services configuration to be added which require an services.something notation.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
matrixClient = lib.mkOption {
|
|
||||||
default = pkgs.nheko;
|
|
||||||
example = null;
|
|
||||||
type = with lib.types; nullOr package;
|
|
||||||
description = "The matrix client";
|
|
||||||
};
|
|
||||||
vesktop = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Adds the vesktop discord client";
|
|
||||||
};
|
|
||||||
ncspot = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Adds the ncspot spotify client";
|
|
||||||
};
|
|
||||||
orcaSlicer = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables orca slicer";
|
|
||||||
};
|
|
||||||
nextcloudClient = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Adds the full desktop nextcloud client (the nextcloud module in dashnix only provides the cli tool)";
|
|
||||||
};
|
|
||||||
mailClient = lib.mkOption {
|
|
||||||
default = pkgs.thunderbird;
|
|
||||||
example = null;
|
|
||||||
type = with lib.types; nullOr package;
|
|
||||||
description = "The email client";
|
|
||||||
};
|
|
||||||
browser = lib.mkOption {
|
|
||||||
default = "zen";
|
|
||||||
example = "firefox";
|
|
||||||
type = with lib.types;
|
|
||||||
nullOr (
|
|
||||||
either (enum [
|
|
||||||
"firefox"
|
|
||||||
"zen"
|
|
||||||
"librewolf"
|
|
||||||
"chromium"
|
|
||||||
"brave"
|
|
||||||
])
|
|
||||||
package
|
|
||||||
);
|
|
||||||
description = "The browser (the enum variants have preconfigured modules)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.optionalAttrs (options ? home.packages) {
|
|
||||||
home.packages =
|
|
||||||
if config.mods.homePackages.useDefaultPackages
|
|
||||||
then
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
(lib.mkIf config.mods.homePackages.ncspot ncspot)
|
|
||||||
(lib.mkIf config.mods.homePackages.orcaSlicer orca-slicer)
|
|
||||||
(lib.mkIf config.mods.homePackages.vesktop vesktop)
|
|
||||||
(lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client)
|
|
||||||
(lib.mkIf (config.mods.homePackages.matrixClient != null) config.mods.homePackages.matrixClient)
|
|
||||||
(lib.mkIf (config.mods.homePackages.mailClient != null) config.mods.homePackages.mailClient)
|
|
||||||
(lib.mkIf (
|
|
||||||
# NOTE: This should be package, but nix doesn't have that....
|
|
||||||
builtins.isAttrs config.mods.homePackages.browser && config.mods.homePackages.browser != null
|
|
||||||
)
|
|
||||||
config.mods.homePackages.browser)
|
|
||||||
adw-gtk3
|
|
||||||
bat
|
|
||||||
brightnessctl
|
|
||||||
dbus
|
|
||||||
fastfetch
|
|
||||||
fd
|
|
||||||
ffmpeg
|
|
||||||
flake-checker
|
|
||||||
gnome-keyring
|
|
||||||
gnutar
|
|
||||||
regreet
|
|
||||||
killall
|
|
||||||
kitty
|
|
||||||
libnotify
|
|
||||||
lsd
|
|
||||||
networkmanager
|
|
||||||
nh
|
|
||||||
nix-index
|
|
||||||
playerctl
|
|
||||||
poppler-utils
|
|
||||||
pulseaudio
|
|
||||||
libsForQt5.qt5ct
|
|
||||||
qt6Packages.qt6ct
|
|
||||||
fuc
|
|
||||||
ripgrep
|
|
||||||
rm-improved
|
|
||||||
system-config-printer
|
|
||||||
xournalpp
|
|
||||||
zenith
|
|
||||||
zoxide
|
|
||||||
]
|
|
||||||
++ config.mods.homePackages.additionalPackages
|
|
||||||
else config.mods.homePackages.additionalPackages;
|
|
||||||
|
|
||||||
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml {}).generate "direnv" {
|
|
||||||
global = {
|
|
||||||
warn_timeout = "-1s";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = config.mods.homePackages.specialPrograms;
|
|
||||||
services = config.mods.homePackages.specialServices;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
120
modules/programs/home_packages.nix
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods.home_packages = {
|
||||||
|
useDefaultPackages = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Use default packages (will use additional_packages only if disabled)";
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.flatpak ];
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
description = ''
|
||||||
|
Additional Home manager packages.
|
||||||
|
Will be installed regardless of default home manager packages are installed.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
matrixClient = lib.mkOption {
|
||||||
|
default = pkgs.nheko;
|
||||||
|
example = null;
|
||||||
|
type = with lib.types; nullOr package;
|
||||||
|
description = "The matrix client";
|
||||||
|
};
|
||||||
|
vesktop = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Adds the vesktop discord client";
|
||||||
|
};
|
||||||
|
ncspot = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Adds the ncspot spotify client";
|
||||||
|
};
|
||||||
|
nextcloudClient = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Adds the full desktop nextcloud client (the nextcloud module in dashnix only provides the cli tool)";
|
||||||
|
};
|
||||||
|
mailClient = lib.mkOption {
|
||||||
|
default = pkgs.thunderbird;
|
||||||
|
example = null;
|
||||||
|
type = with lib.types; nullOr package;
|
||||||
|
description = "The email client";
|
||||||
|
};
|
||||||
|
additionalBrowser = lib.mkOption {
|
||||||
|
default = pkgs.brave;
|
||||||
|
example = null;
|
||||||
|
type = with lib.types; nullOr package;
|
||||||
|
description = "Additional browser -> second to firefox, the only installed browser if firefox is disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config =
|
||||||
|
(lib.optionalAttrs (options ? home.packages) {
|
||||||
|
home.packages = config.mods.home_packages.additional_packages;
|
||||||
|
})
|
||||||
|
// lib.mkIf config.mods.home_packages.useDefaultPackages (
|
||||||
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
# TODO add fcp once fixed....
|
||||||
|
(lib.mkIf config.mods.home_packages.ncspot ncspot)
|
||||||
|
(lib.mkIf config.mods.home_packages.vesktop vesktop)
|
||||||
|
(lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client)
|
||||||
|
(lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient)
|
||||||
|
(lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient)
|
||||||
|
(lib.mkIf (
|
||||||
|
!isNull config.mods.home_packages.additionalBrowser
|
||||||
|
) config.mods.home_packages.additionalBrowser)
|
||||||
|
adw-gtk3
|
||||||
|
bat
|
||||||
|
brightnessctl
|
||||||
|
dbus
|
||||||
|
fastfetch
|
||||||
|
fd
|
||||||
|
ffmpeg
|
||||||
|
flake-checker
|
||||||
|
gnome-keyring
|
||||||
|
gnutar
|
||||||
|
greetd.regreet
|
||||||
|
killall
|
||||||
|
kitty
|
||||||
|
libnotify
|
||||||
|
lsd
|
||||||
|
networkmanager
|
||||||
|
nh
|
||||||
|
nix-index
|
||||||
|
playerctl
|
||||||
|
poppler_utils
|
||||||
|
pulseaudio
|
||||||
|
qt5ct
|
||||||
|
qt6ct
|
||||||
|
ripgrep
|
||||||
|
rm-improved
|
||||||
|
system-config-printer
|
||||||
|
xournalpp
|
||||||
|
zenith
|
||||||
|
zoxide
|
||||||
|
]
|
||||||
|
++ config.mods.home_packages.additional_packages;
|
||||||
|
|
||||||
|
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" {
|
||||||
|
global = {
|
||||||
|
warn_timeout = "-1s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,357 +0,0 @@
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
defaultWmConf = import ../../../lib/wm.nix;
|
|
||||||
in {
|
|
||||||
options.mods.hypr.hyprland = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enable Hyprland
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
noAtomic = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use tearing (Warning, can be buggy)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useIronbar = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to use ironbar in hyprland.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useDefaultConfig = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured Hyprland config.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
customConfig = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Custom Hyprland configuration.
|
|
||||||
Will be merged with default configuration if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
plugins = lib.mkOption {
|
|
||||||
default = [];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
description = ''
|
|
||||||
Plugins to be added to Hyprland.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
pluginConfig = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Plugin configuration to be added to Hyprland.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
hyprspaceEnable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
Enables Hyprspace plugin for hyprland.
|
|
||||||
Please note, plugins tend to break VERY often.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.hypr.hyprland.enable (
|
|
||||||
lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
|
|
||||||
# install Hyprland related packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
xorg.xprop
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
satty
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-gnome
|
|
||||||
kdePackages.xdg-desktop-portal-kde
|
|
||||||
xdg-desktop-portal-shana
|
|
||||||
copyq
|
|
||||||
wl-clipboard
|
|
||||||
hyprcursor
|
|
||||||
hyprpicker
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = let
|
|
||||||
mkWorkspace = workspaces:
|
|
||||||
builtins.map (workspace: let
|
|
||||||
default =
|
|
||||||
if workspace.default
|
|
||||||
then ",default:true"
|
|
||||||
else "";
|
|
||||||
in "${workspace.name},monitor:${workspace.monitor}${default}")
|
|
||||||
workspaces;
|
|
||||||
mkTransform = transform:
|
|
||||||
if transform == "0"
|
|
||||||
then 0
|
|
||||||
else if transform == "90"
|
|
||||||
then 1
|
|
||||||
else if transform == "180"
|
|
||||||
then 2
|
|
||||||
else if transform == "270"
|
|
||||||
then 3
|
|
||||||
else 4;
|
|
||||||
mkVrr = vrr:
|
|
||||||
if vrr
|
|
||||||
then "1"
|
|
||||||
else "0";
|
|
||||||
mkMonitors = monitors:
|
|
||||||
builtins.map (
|
|
||||||
monitor: "${monitor.name},${builtins.toString monitor.resolutionX}x${builtins.toString monitor.resolutionY}@${builtins.toString monitor.refreshrate},${builtins.toString monitor.positionX}x${builtins.toString monitor.positionY},${builtins.toString monitor.scale}, transform,${builtins.toString (mkTransform monitor.transform)}, vrr,${mkVrr monitor.vrr}"
|
|
||||||
)
|
|
||||||
monitors;
|
|
||||||
|
|
||||||
mkMods = bind: let
|
|
||||||
mods = bind.modKeys or [];
|
|
||||||
in
|
|
||||||
builtins.map (mod:
|
|
||||||
if mod == "Mod"
|
|
||||||
then (lib.strings.toUpper config.mods.wm.modKey) + " "
|
|
||||||
else lib.strings.toUpper mod)
|
|
||||||
mods
|
|
||||||
|> lib.strings.concatStringsSep "";
|
|
||||||
mkArgs = args:
|
|
||||||
if args != []
|
|
||||||
then (lib.strings.concatStringsSep " " args)
|
|
||||||
else "";
|
|
||||||
shouldRepeat = bind: bind ? meta && bind.meta ? hyprland && bind.meta.hyprland ? repeat && bind.meta.hyprland.repeat == true;
|
|
||||||
|
|
||||||
defaultBinds = cfg:
|
|
||||||
if cfg.mods.wm.useDefaultBinds
|
|
||||||
then defaultWmConf.defaultBinds cfg
|
|
||||||
else [];
|
|
||||||
|
|
||||||
mkEBinds = cfg: let
|
|
||||||
binds = cfg.mods.wm.binds ++ defaultBinds cfg;
|
|
||||||
in
|
|
||||||
binds
|
|
||||||
|> builtins.filter (bind: bind ? command && shouldRepeat bind && !(hasInvalidCustomCommand bind))
|
|
||||||
|> builtins.map (
|
|
||||||
bind: "${mkMods bind},${bind.key},${mkCommand bind}"
|
|
||||||
);
|
|
||||||
mkBinds = cfg: let
|
|
||||||
binds = cfg.mods.wm.binds ++ defaultBinds cfg;
|
|
||||||
in
|
|
||||||
binds
|
|
||||||
|> builtins.filter (bind: bind ? command && !(shouldRepeat bind) && !(hasInvalidCustomCommand bind))
|
|
||||||
|> builtins.map (
|
|
||||||
bind: "${mkMods bind},${bind.key},${mkCommand bind}"
|
|
||||||
);
|
|
||||||
mkCommand = bind: let
|
|
||||||
args = bind.args or [];
|
|
||||||
in
|
|
||||||
if bind.command == "quit"
|
|
||||||
then "exit"
|
|
||||||
else if bind.command == "killActive"
|
|
||||||
then "killactive"
|
|
||||||
else if bind.command == "moveWindowRight"
|
|
||||||
then "movewindow,r"
|
|
||||||
else if bind.command == "moveWindowDown"
|
|
||||||
then "movewindow,d"
|
|
||||||
else if bind.command == "moveWindowLeft"
|
|
||||||
then "movewindow,l"
|
|
||||||
else if bind.command == "moveWindowUp"
|
|
||||||
then "movewindow,u"
|
|
||||||
else if bind.command == "moveFocusUp"
|
|
||||||
then "movefocus,u"
|
|
||||||
else if bind.command == "moveFocusRight"
|
|
||||||
then "movefocus,r"
|
|
||||||
else if bind.command == "moveFocusDown"
|
|
||||||
then "movefocus,d"
|
|
||||||
else if bind.command == "moveFocusLeft"
|
|
||||||
then "movefocus,l"
|
|
||||||
else if bind.command == "toggleFloating"
|
|
||||||
then "togglefloating"
|
|
||||||
else if bind.command == "toggleFullscreen"
|
|
||||||
then "fullscreen"
|
|
||||||
else if bind.command == "focusWorkspace"
|
|
||||||
then "workspace" + "," + mkArgs args
|
|
||||||
else if bind.command == "moveToWorkspace"
|
|
||||||
then "movetoworkspace" + "," + mkArgs args
|
|
||||||
else if bind.command == "spawn"
|
|
||||||
then "exec" + "," + mkArgs args
|
|
||||||
else if bind.command == "spawn-sh"
|
|
||||||
then "exec" + "," + mkArgs args
|
|
||||||
else bind.command.hyprland + "," + mkArgs args;
|
|
||||||
hasInvalidCustomCommand = bind: !(builtins.isString bind.command) && bind.command.hyprland or null == null;
|
|
||||||
|
|
||||||
mkEnv = config: let
|
|
||||||
defaultEnv =
|
|
||||||
if config.mods.wm.useDefaultEnv
|
|
||||||
then defaultWmConf.defaultEnv config
|
|
||||||
else {
|
|
||||||
all = {};
|
|
||||||
hyprland = {};
|
|
||||||
};
|
|
||||||
userEnv =
|
|
||||||
if config.mods.wm.env ? all
|
|
||||||
then config.mods.wm.env.all // config.mods.wm.env.hyprland
|
|
||||||
else config.mods.wm.env;
|
|
||||||
env = userEnv // defaultEnv.all // defaultEnv.hyprland;
|
|
||||||
in
|
|
||||||
lib.attrsets.mapAttrsToList (
|
|
||||||
name: value: "${name},${value}"
|
|
||||||
)
|
|
||||||
env;
|
|
||||||
mkAutoStart = config: let
|
|
||||||
defaultStartup =
|
|
||||||
if config.mods.wm.useDefaultStartup
|
|
||||||
then defaultWmConf.defaultStartup config
|
|
||||||
else {
|
|
||||||
all = [];
|
|
||||||
hyprland = [];
|
|
||||||
};
|
|
||||||
userStartup =
|
|
||||||
if config.mods.wm.startup ? all
|
|
||||||
then config.mods.wm.startup.all ++ config.mods.wm.startup.hyprland
|
|
||||||
else config.mods.wm.startup;
|
|
||||||
autoStart = userStartup ++ defaultStartup.all ++ defaultStartup.hyprland;
|
|
||||||
in
|
|
||||||
autoStart;
|
|
||||||
mkWindowRule = config: let
|
|
||||||
defaultWindowRules =
|
|
||||||
if config.mods.wm.useDefaultWindowRules
|
|
||||||
then defaultWmConf.defaultWindowRules.hyprland
|
|
||||||
else [];
|
|
||||||
in
|
|
||||||
# defaultWindowRules ++ config.mods.wm.windowRules.hyprland;
|
|
||||||
defaultWindowRules;
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
plugins =
|
|
||||||
[
|
|
||||||
(lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable pkgs.hyprlandPlugins.hyprspace)
|
|
||||||
]
|
|
||||||
++ config.mods.hypr.hyprland.plugins;
|
|
||||||
settings =
|
|
||||||
if config.mods.hypr.hyprland.useDefaultConfig
|
|
||||||
then
|
|
||||||
lib.mkMerge
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"$mod" = mkDashDefault config.mods.wm.modKey;
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod, mouse:273, resizeactive"
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_out = mkDashDefault "3,5,5,5";
|
|
||||||
border_size = mkDashDefault 3;
|
|
||||||
"col.active_border" = lib.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
|
|
||||||
allow_tearing = lib.mkIf config.mods.hypr.hyprland.noAtomic true;
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = mkDashDefault 4;
|
|
||||||
};
|
|
||||||
|
|
||||||
render = {
|
|
||||||
direct_scanout = mkDashDefault config.mods.gaming.enable;
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
bezier = mkDashDefault "overshot, 0.05, 0.9, 0.1, 1.2";
|
|
||||||
animation = [
|
|
||||||
"windowsMove,1,4,default"
|
|
||||||
"windows,1,3,overshot,slide bottom"
|
|
||||||
"windowsOut,1,7,default,popin 70%"
|
|
||||||
"border,1,4,default"
|
|
||||||
"fade,1,7,default"
|
|
||||||
"workspaces,1,4,default"
|
|
||||||
"layers,1,2,default,slide"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
preserve_split = mkDashDefault true;
|
|
||||||
pseudotile = mkDashDefault 0;
|
|
||||||
permanent_direction_override = mkDashDefault false;
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
kb_layout = mkDashDefault "${config.mods.xkb.layout}";
|
|
||||||
kb_variant = mkDashDefault "${config.mods.xkb.variant}";
|
|
||||||
repeat_delay = mkDashDefault 200;
|
|
||||||
force_no_accel = mkDashDefault true;
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = mkDashDefault true;
|
|
||||||
tap-to-click = mkDashDefault true;
|
|
||||||
tap-and-drag = mkDashDefault true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
animate_manual_resizes = mkDashDefault 1;
|
|
||||||
enable_swallow = mkDashDefault true;
|
|
||||||
disable_splash_rendering = mkDashDefault true;
|
|
||||||
disable_hyprland_logo = mkDashDefault true;
|
|
||||||
disable_xdg_env_checks = mkDashDefault true;
|
|
||||||
disable_scale_notification = mkDashDefault true;
|
|
||||||
swallow_regex = mkDashDefault "^(.*)(kitty)(.*)$";
|
|
||||||
initial_workspace_tracking = mkDashDefault 1;
|
|
||||||
# just doesn't work
|
|
||||||
enable_anr_dialog = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
enable_hyprcursor = mkDashDefault true;
|
|
||||||
no_hardware_cursors = mkDashDefault (
|
|
||||||
if config.mods.gpu.nvidia.enable
|
|
||||||
then 2
|
|
||||||
else 0
|
|
||||||
);
|
|
||||||
# done with nix, this would break the current setup otherwise
|
|
||||||
sync_gsettings_theme = mkDashDefault false;
|
|
||||||
};
|
|
||||||
|
|
||||||
gesture = [
|
|
||||||
"3, horizontal, workspace"
|
|
||||||
];
|
|
||||||
|
|
||||||
layerrule = [
|
|
||||||
# layer rules
|
|
||||||
# mainly to disable animations within slurp and grim
|
|
||||||
"match:namespace selection, no_anim on"
|
|
||||||
];
|
|
||||||
|
|
||||||
workspace = mkWorkspace config.mods.wm.workspaces;
|
|
||||||
monitor = mkMonitors config.mods.wm.monitors;
|
|
||||||
env = mkEnv config;
|
|
||||||
bind = mkBinds config;
|
|
||||||
binde = mkEBinds config;
|
|
||||||
windowrule = mkWindowRule config;
|
|
||||||
exec-once = mkAutoStart config;
|
|
||||||
plugin = config.mods.hypr.hyprland.pluginConfig;
|
|
||||||
}
|
|
||||||
config.mods.hypr.hyprland.customConfig
|
|
||||||
]
|
|
||||||
else lib.mkForce config.mods.hypr.hyprland.customConfig;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.hypr.hyprlock = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables Hyprlock";
|
|
||||||
};
|
|
||||||
config = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
path = "";
|
|
||||||
color = "rgba(26, 27, 38, 1.0)";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
monitor = "${
|
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then (builtins.elemAt config.mods.wm.monitors 0).name
|
|
||||||
else ""
|
|
||||||
}";
|
|
||||||
placeholder_text = "password or something";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
monitor = "${
|
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then (builtins.elemAt config.mods.wm.monitors 0).name
|
|
||||||
else ""
|
|
||||||
}";
|
|
||||||
text = "$TIME";
|
|
||||||
font_size = 50;
|
|
||||||
position = "0, 200";
|
|
||||||
valign = "center";
|
|
||||||
halign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "config";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.hypr.hyprlock.enable (
|
|
||||||
lib.optionalAttrs (options ? xdg.configFile) {
|
|
||||||
stylix.targets.hyprlock = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [hyprlock];
|
|
||||||
programs.hyprlock = lib.mkIf config.mods.hypr.hyprlock.enable {
|
|
||||||
enable = true;
|
|
||||||
settings = config.mods.hypr.hyprlock.config;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.hypr.hyprpaper = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables Hyprpaper";
|
|
||||||
};
|
|
||||||
config = lib.mkOption {
|
|
||||||
default = "";
|
|
||||||
example = ''
|
|
||||||
preload = path/to/wallpaper
|
|
||||||
wallpaper = YOURMONITOR,path/to/wallpaper
|
|
||||||
'';
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = ''
|
|
||||||
Hyprpaper config
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.hypr.hyprpaper.enable (
|
|
||||||
lib.optionalAttrs (options ? xdg.configFile) {
|
|
||||||
home.packages = with pkgs; [hyprpaper];
|
|
||||||
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hypr.hyprpaper.enable {
|
|
||||||
text = config.mods.hypr.hyprpaper.config;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
96
modules/programs/hyprland/anyrun.nix
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
options,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
hyprland.anyrun = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables anyrun";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.hyprland.anyrun.enable (
|
||||||
|
lib.optionalAttrs (options ? programs.anyrun) {
|
||||||
|
programs.anyrun = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
plugins = [
|
||||||
|
inputs.anyrun.packages.${pkgs.system}.applications
|
||||||
|
inputs.anyrun.packages.${pkgs.system}.rink
|
||||||
|
inputs.anyrun.packages.${pkgs.system}.translate
|
||||||
|
inputs.anyrun.packages.${pkgs.system}.websearch
|
||||||
|
];
|
||||||
|
#position = "center";
|
||||||
|
hideIcons = false;
|
||||||
|
width = {
|
||||||
|
fraction = 0.3;
|
||||||
|
};
|
||||||
|
y = {
|
||||||
|
fraction = 0.5;
|
||||||
|
};
|
||||||
|
layer = "overlay";
|
||||||
|
hidePluginInfo = true;
|
||||||
|
closeOnClick = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraCss = ''
|
||||||
|
#window {
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
box#main {
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
list#main {
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 0px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
list#plugin {
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
list#match {
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry#entry {
|
||||||
|
border: none;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 10px 10px 0px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label#match-desc {
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label#match-title {
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label#plugin {
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
|
./anyrun.nix
|
||||||
|
./ironbar.nix
|
||||||
./hyprlock.nix
|
./hyprlock.nix
|
||||||
./hyprpaper.nix
|
./hyprpaper.nix
|
||||||
];
|
];
|
||||||
353
modules/programs/hyprland/hyprland.nix
Normal file
|
|
@ -0,0 +1,353 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
hyprland = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enable Hyprland
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
monitor = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ "DP-1,3440x1440@180,2560x0,1,vrr,0" ];
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = ''
|
||||||
|
The monitor configuration for hyprland.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
workspace = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ "2,monitor:DP-1, default:true" ];
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = ''
|
||||||
|
The workspace configuration for hyprland.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
no_atomic = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Use tearing
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
extra_autostart = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ "your application" ];
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Extra exec_once.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
use_default_config = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Use preconfigured Hyprland config.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
custom_config = lib.mkOption {
|
||||||
|
default = { };
|
||||||
|
example = { };
|
||||||
|
type = with lib.types; attrsOf anything;
|
||||||
|
description = ''
|
||||||
|
Custom Hyprland configuration.
|
||||||
|
Will be merged with default configuration if enabled.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.hyprland.enable (
|
||||||
|
lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
|
||||||
|
# install Hyprland related packages
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xorg.xprop
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
satty
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
# xdg-desktop-portal-hyprland
|
||||||
|
copyq
|
||||||
|
wl-clipboard
|
||||||
|
hyprcursor
|
||||||
|
hyprpicker
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
wayland.windowManager.hyprland.settings =
|
||||||
|
lib.mkIf config.mods.hyprland.use_default_config {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
# screenshots
|
||||||
|
''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy''
|
||||||
|
''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -''
|
||||||
|
''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
|
||||||
|
|
||||||
|
# regular programs
|
||||||
|
"$mod SUPER,F,exec,firefox"
|
||||||
|
"$mod SUPERSHIFT,F,exec,firefox -p special"
|
||||||
|
"$mod SUPER,T,exec,kitty -1"
|
||||||
|
"$mod SUPER,E,exec,nautilus -w"
|
||||||
|
"$mod SUPER,N,exec,neovide"
|
||||||
|
"$mod SUPER,M,exec,oxidash"
|
||||||
|
"$mod SUPER,R,exec,anyrun"
|
||||||
|
"$mod SUPER,G,exec,oxicalc"
|
||||||
|
"$mod SUPER,D,exec,oxishut"
|
||||||
|
"$mod SUPER,A,exec,oxipaste"
|
||||||
|
"$mod SUPERSHIFT,P,exec,hyprdock --gui"
|
||||||
|
"$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend"
|
||||||
|
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
|
||||||
|
|
||||||
|
# media keys
|
||||||
|
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute")
|
||||||
|
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%")
|
||||||
|
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%")
|
||||||
|
",XF86AudioPlay,exec, playerctl play-pause"
|
||||||
|
",XF86AudioNext,exec, playerctl next"
|
||||||
|
",XF86AudioPrev,exec, playerctl previous"
|
||||||
|
(lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-")
|
||||||
|
(lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%")
|
||||||
|
|
||||||
|
# hyprland keybinds
|
||||||
|
# misc
|
||||||
|
"$mod SUPER,V,togglefloating,"
|
||||||
|
"$mod SUPER,B,fullscreen,"
|
||||||
|
"$mod SUPER,C,togglesplit"
|
||||||
|
"$mod SUPER,Q,killactive,"
|
||||||
|
"$mod SUPERSHIFTALT,M,exit,"
|
||||||
|
"$mod SUPERSHIFT,W,togglespecialworkspace"
|
||||||
|
|
||||||
|
# move
|
||||||
|
"$mod SUPER,left,movewindow,l"
|
||||||
|
"$mod SUPER,right,movewindow,r"
|
||||||
|
"$mod SUPER,up,movewindow,u"
|
||||||
|
"$mod SUPER,down,movewindow,d"
|
||||||
|
|
||||||
|
# workspaces
|
||||||
|
"$mod SUPER,1,workspace,1"
|
||||||
|
"$mod SUPER,2,workspace,2"
|
||||||
|
"$mod SUPER,3,workspace,3"
|
||||||
|
"$mod SUPER,4,workspace,4"
|
||||||
|
"$mod SUPER,5,workspace,5"
|
||||||
|
"$mod SUPER,6,workspace,6"
|
||||||
|
"$mod SUPER,7,workspace,7"
|
||||||
|
"$mod SUPER,8,workspace,8"
|
||||||
|
"$mod SUPER,9,workspace,9"
|
||||||
|
"$mod SUPER,0,workspace,10"
|
||||||
|
|
||||||
|
# move to workspace
|
||||||
|
"$mod SUPERSHIFT,1,movetoworkspace,1"
|
||||||
|
"$mod SUPERSHIFT,2,movetoworkspace,2"
|
||||||
|
"$mod SUPERSHIFT,3,movetoworkspace,3"
|
||||||
|
"$mod SUPERSHIFT,4,movetoworkspace,4"
|
||||||
|
"$mod SUPERSHIFT,5,movetoworkspace,5"
|
||||||
|
"$mod SUPERSHIFT,6,movetoworkspace,6"
|
||||||
|
"$mod SUPERSHIFT,7,movetoworkspace,7"
|
||||||
|
"$mod SUPERSHIFT,8,movetoworkspace,8"
|
||||||
|
"$mod SUPERSHIFT,9,movetoworkspace,9"
|
||||||
|
"$mod SUPERSHIFT,0,movetoworkspace,10"
|
||||||
|
|
||||||
|
# move to workspace silent
|
||||||
|
"$mod SUPERSHIFTALT,1,movetoworkspacesilent,1"
|
||||||
|
"$mod SUPERSHIFTALT,2,movetoworkspacesilent,2"
|
||||||
|
"$mod SUPERSHIFTALT,3,movetoworkspacesilent,3"
|
||||||
|
"$mod SUPERSHIFTALT,4,movetoworkspacesilent,4"
|
||||||
|
"$mod SUPERSHIFTALT,5,movetoworkspacesilent,5"
|
||||||
|
"$mod SUPERSHIFTALT,6,movetoworkspacesilent,6"
|
||||||
|
"$mod SUPERSHIFTALT,7,movetoworkspacesilent,7"
|
||||||
|
"$mod SUPERSHIFTALT,8,movetoworkspacesilent,8"
|
||||||
|
"$mod SUPERSHIFTALT,9,movetoworkspacesilent,9"
|
||||||
|
"$mod SUPERSHIFTALT,0,movetoworkspacesilent,10"
|
||||||
|
|
||||||
|
# preselection
|
||||||
|
"$mod SUPERALT,j,layoutmsg,preselect l"
|
||||||
|
"$mod SUPERALT,k,layoutmsg,preselect d"
|
||||||
|
"$mod SUPERALT,l,layoutmsg,preselect u"
|
||||||
|
"$mod SUPERALT,semicolon,layoutmsg,preselect r"
|
||||||
|
"$mod SUPERALT,h,layoutmsg,preselect n"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
# hyprland keybinds
|
||||||
|
# focus
|
||||||
|
"$mod SUPER,J,movefocus,l"
|
||||||
|
"$mod SUPER,semicolon,movefocus,r"
|
||||||
|
"$mod SUPER,L,movefocus,u"
|
||||||
|
"$mod SUPER,K,movefocus,d"
|
||||||
|
|
||||||
|
# resize
|
||||||
|
"$mod SUPER,U,resizeactive,-20 0"
|
||||||
|
"$mod SUPER,P,resizeactive,20 0"
|
||||||
|
"$mod SUPER,O,resizeactive,0 -20"
|
||||||
|
"$mod SUPER,I,resizeactive,0 20"
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_out = "3,5,5,5";
|
||||||
|
border_size = 3;
|
||||||
|
"col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
|
||||||
|
# "col.inactive_border" = "0x66333333";
|
||||||
|
allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 4;
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
bezier = "penguin,0.05,0.9,0.1,1.0";
|
||||||
|
animation = [
|
||||||
|
"windowsMove,1,4,default"
|
||||||
|
"windows,1,7,default,popin 70%"
|
||||||
|
"windowsOut,1,7,default,popin 70%"
|
||||||
|
"border,1,10,default"
|
||||||
|
"fade,1,7,default"
|
||||||
|
"workspaces,1,6,default"
|
||||||
|
"layers,1,3,default,popin"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true;
|
||||||
|
pseudotile = 0;
|
||||||
|
permanent_direction_override = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "${config.mods.xkb.layout}";
|
||||||
|
kb_variant = "${config.mods.xkb.variant}";
|
||||||
|
repeat_delay = 200;
|
||||||
|
force_no_accel = true;
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = true;
|
||||||
|
tap-to-click = true;
|
||||||
|
tap-and-drag = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
animate_manual_resizes = 1;
|
||||||
|
enable_swallow = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
swallow_regex = "^(.*)(kitty)(.*)$";
|
||||||
|
initial_workspace_tracking = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
# conversion seems to be borked right now, i want a smooth bibata :(
|
||||||
|
enable_hyprcursor = false;
|
||||||
|
no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true;
|
||||||
|
# no_break_fs_vrr = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
monitor = config.mods.hyprland.monitor;
|
||||||
|
workspace = config.mods.hyprland.workspace;
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"GTK_CSD,0"
|
||||||
|
''TERM,"kitty /bin/fish"''
|
||||||
|
"XDG_CURRENT_DESKTOP=Hyprland"
|
||||||
|
"XDG_SESSION_TYPE=wayland"
|
||||||
|
"XDG_SESSION_DESKTOP=Hyprland"
|
||||||
|
"HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}"
|
||||||
|
"HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}"
|
||||||
|
"XCURSOR_THEME,${config.mods.stylix.cursor.name}"
|
||||||
|
"XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}"
|
||||||
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
"QT_QPA_PLATFORMTHEME,qt5ct"
|
||||||
|
"QT_WAYLAND_FORCE_DPI,96"
|
||||||
|
"QT_AUTO_SCREEN_SCALE_FACTOR,0"
|
||||||
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
|
"QT_SCALE_FACTOR,1"
|
||||||
|
''EDITOR,"neovide --novsync --nofork"''
|
||||||
|
(lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1")
|
||||||
|
"GTK_USE_PORTAL, 1"
|
||||||
|
|
||||||
|
(lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia")
|
||||||
|
(lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland")
|
||||||
|
(lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm")
|
||||||
|
(lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia")
|
||||||
|
];
|
||||||
|
|
||||||
|
layerrule = [
|
||||||
|
# layer rules
|
||||||
|
# mainly to disable animations within slurp and grim
|
||||||
|
"noanim, selection"
|
||||||
|
];
|
||||||
|
|
||||||
|
windowrule = [
|
||||||
|
# window rules
|
||||||
|
"tile,^(.*)(Spotify)(.*)$"
|
||||||
|
"float,^(.*)(OxiCalc)(.*)$"
|
||||||
|
"float,^(.*)(winecfg.exe)(.*)$"
|
||||||
|
"float,^(.*)(speed.exe)(.*)$"
|
||||||
|
"float,^(.*)(copyq)(.*)$"
|
||||||
|
"center,^(.*)(swappy)(.*)$"
|
||||||
|
"float,title:^(.*)(Spirit)(.*)$"
|
||||||
|
"float,title:^(.*)(reset)(.*)$"
|
||||||
|
"workspace 10 silent,^(.*)(steam)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(dota)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(battlebits)(.*)$"
|
||||||
|
"workspace 9 silent,^(.*)(aoe)(.*)$"
|
||||||
|
"suppressevent fullscreen maximize,^(.*)(neovide)(.*)$"
|
||||||
|
];
|
||||||
|
|
||||||
|
windowrulev2 = [
|
||||||
|
"immediate,class:^(.*)(Pal)$"
|
||||||
|
"immediate,class:^(.*)(dota2)$"
|
||||||
|
"immediate,class:^(.*)(needforspeedheat.exe)$"
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
# environment
|
||||||
|
"systemctl --user import-environment"
|
||||||
|
"dbus-update-activation-environment --systemd --all"
|
||||||
|
"hyprctl setcursor Bibata-Modern-Classic 24"
|
||||||
|
|
||||||
|
# other programs
|
||||||
|
"hyprpaper"
|
||||||
|
"ironbar"
|
||||||
|
"firefox"
|
||||||
|
"oxipaste_daemon"
|
||||||
|
# should be taken care of with the new systemd services
|
||||||
|
# "nextcloud --background"
|
||||||
|
"oxinoti"
|
||||||
|
] ++ config.mods.hyprland.extra_autostart;
|
||||||
|
|
||||||
|
# plugin = {
|
||||||
|
# hyprspace = {
|
||||||
|
# bind = [
|
||||||
|
# "SUPER, W, overview:toggle, toggle"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
|
// config.mods.hyprland.custom_config;
|
||||||
|
# wayland.windowManager.hyprland.plugins = [
|
||||||
|
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
||||||
|
# ];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
56
modules/programs/hyprland/hyprlock.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
hyprland.hyprlock = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables Hyprlock";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.hyprland.hyprlock.enable (
|
||||||
|
lib.optionalAttrs (options ? xdg.configFile) {
|
||||||
|
home.packages = with pkgs; [ hyprlock ];
|
||||||
|
programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "";
|
||||||
|
color = "rgba(26, 27, 38, 1.0)";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
monitor = "${config.conf.monitor}";
|
||||||
|
|
||||||
|
placeholder_text = "password or something";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
label = [
|
||||||
|
{
|
||||||
|
monitor = "${config.conf.monitor}";
|
||||||
|
text = "$TIME";
|
||||||
|
font_size = 50;
|
||||||
|
position = "0, 200";
|
||||||
|
valign = "center";
|
||||||
|
halign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
38
modules/programs/hyprland/hyprpaper.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
hyprland.hyprpaper = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables Hyprpaper";
|
||||||
|
};
|
||||||
|
config = lib.mkOption {
|
||||||
|
default = "";
|
||||||
|
example = ''
|
||||||
|
Hyprpaper config
|
||||||
|
'';
|
||||||
|
type = lib.types.lines;
|
||||||
|
description = ''
|
||||||
|
Hyprpaper config
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.hyprland.hyprpaper.enable (
|
||||||
|
lib.optionalAttrs (options ? xdg.configFile) {
|
||||||
|
home.packages = with pkgs; [ hyprpaper ];
|
||||||
|
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable {
|
||||||
|
text = config.mods.hyprland.hyprpaper.config;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
280
modules/programs/hyprland/ironbar.nix
Normal file
|
|
@ -0,0 +1,280 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
options,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
username = config.conf.username;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.mods = {
|
||||||
|
hyprland.ironbar = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables ironbar";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.hyprland.ironbar.enable (
|
||||||
|
lib.optionalAttrs (options ? programs.ironbar) {
|
||||||
|
|
||||||
|
programs.ironbar = {
|
||||||
|
enable = true;
|
||||||
|
style = ''
|
||||||
|
@import url("/home/${username}/.config/gtk-3.0/gtk.css");
|
||||||
|
|
||||||
|
* {
|
||||||
|
color: #71bbe6;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background {
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces {
|
||||||
|
margin: 2px 0px 0px 5px;
|
||||||
|
border-radius: 10px;
|
||||||
|
/* background-color: #2b2c3b; */
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
padding: 2px 5px 2px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces .item {
|
||||||
|
margin: 0px 3px 0px 3px;
|
||||||
|
font-size: 13px;
|
||||||
|
border-radius: 100%;
|
||||||
|
padding: 0px 2px 0px 3px;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces .item:hover {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces .item.focused {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-box {
|
||||||
|
padding: 2em;
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-slider {
|
||||||
|
padding: 5px;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-button {
|
||||||
|
padding: 5px 10px 5px 10px;
|
||||||
|
margin: 0px 1em 20px 1em;
|
||||||
|
border-radius: 100%;
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-button-box {
|
||||||
|
padding: 0px 2.5em 0px 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.focused {
|
||||||
|
/* margin: 2px 0px 0px 0px; */
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
/* background-color: 1a1b26; */
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
font-size: 17px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bar #end {
|
||||||
|
margin: 0px 5px 0px 0px;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-button {
|
||||||
|
padding: 0px 5px 0px 3px;
|
||||||
|
margin: 0em 3px;
|
||||||
|
border-radius: 100%;
|
||||||
|
font-size: 13px;
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-button-box {
|
||||||
|
padding: 2px 0px 2px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
font-size: 17px;
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clock:hover {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom button {
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom button:hover {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
|
||||||
|
.memory-usage {
|
||||||
|
font-size: 15px;
|
||||||
|
margin: 0px 5px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.memory-usage:hover {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-clock {
|
||||||
|
background-color: #1E1E2E;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 2px 8px 10px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-clock .calendar-clock {
|
||||||
|
font-size: 2.5em;
|
||||||
|
padding-bottom: 0.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-clock .calendar {
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 1.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-clock .calendar:selected {
|
||||||
|
background-color: #3e4152;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
features = [
|
||||||
|
#"another_feature"
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
monitors."${config.conf.monitor}" = {
|
||||||
|
end = config.conf.ironbar.modules ++ [
|
||||||
|
{
|
||||||
|
type = "sys_info";
|
||||||
|
format = [ " {memory_percent}" ];
|
||||||
|
interval.memory = 30;
|
||||||
|
class = "memory-usage";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom";
|
||||||
|
bar = [
|
||||||
|
{
|
||||||
|
type = "button";
|
||||||
|
class = "popup-button";
|
||||||
|
label = "";
|
||||||
|
on_click = "popup:toggle";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
class = "popup-button-box";
|
||||||
|
popup = [
|
||||||
|
{
|
||||||
|
type = "box";
|
||||||
|
orientation = "vertical";
|
||||||
|
class = "audio-box";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "box";
|
||||||
|
orientation = "horizontal";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "button";
|
||||||
|
class = "audio-button";
|
||||||
|
label = "";
|
||||||
|
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "button";
|
||||||
|
class = "audio-button";
|
||||||
|
label = "";
|
||||||
|
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
class = "audio-button-box";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "label";
|
||||||
|
label = "Output";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "slider";
|
||||||
|
class = "audio-slider";
|
||||||
|
step = 1.0;
|
||||||
|
length = 200;
|
||||||
|
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
||||||
|
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "label";
|
||||||
|
label = "Input";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "slider";
|
||||||
|
class = "audio-slider";
|
||||||
|
step = 1.0;
|
||||||
|
length = 200;
|
||||||
|
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
||||||
|
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom";
|
||||||
|
bar = [
|
||||||
|
{
|
||||||
|
type = "button";
|
||||||
|
class = "popup-button";
|
||||||
|
label = "";
|
||||||
|
on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
class = "popup-button-box";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "clock";
|
||||||
|
format = "%I:%M";
|
||||||
|
format_popup = "%I:%M:%S";
|
||||||
|
locale = "en_US";
|
||||||
|
}
|
||||||
|
{ type = "tray"; }
|
||||||
|
];
|
||||||
|
position = "top";
|
||||||
|
height = 10;
|
||||||
|
anchor_to_edges = true;
|
||||||
|
start = [
|
||||||
|
{
|
||||||
|
type = "workspaces";
|
||||||
|
all_monitors = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
{
|
||||||
|
type = "focused";
|
||||||
|
show_icon = true;
|
||||||
|
show_title = true;
|
||||||
|
icon_size = 20;
|
||||||
|
truncate = "end";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -1,552 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
options,
|
|
||||||
mkDashDefault,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (config.conf) username;
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
ironbarDefaultConfig = useBatteryModule: {
|
|
||||||
end = [
|
|
||||||
(lib.mkIf useBatteryModule
|
|
||||||
{
|
|
||||||
type = "battery";
|
|
||||||
class = "battery";
|
|
||||||
icon_size = 0;
|
|
||||||
format = "{percentage}%";
|
|
||||||
thresholds = {
|
|
||||||
warning = 20;
|
|
||||||
critical = 5;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
{
|
|
||||||
class = "music";
|
|
||||||
type = "music";
|
|
||||||
format = "";
|
|
||||||
truncate = {
|
|
||||||
mode = "end";
|
|
||||||
max_length = 0;
|
|
||||||
};
|
|
||||||
icons = {
|
|
||||||
play = "";
|
|
||||||
pause = "";
|
|
||||||
};
|
|
||||||
truncate_popup_title = {
|
|
||||||
mode = "end";
|
|
||||||
max_length = 15;
|
|
||||||
};
|
|
||||||
truncate_popup_album = {
|
|
||||||
mode = "end";
|
|
||||||
max_length = 15;
|
|
||||||
};
|
|
||||||
truncate_popup_artist = {
|
|
||||||
mode = "end";
|
|
||||||
max_length = 15;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bar = [
|
|
||||||
{
|
|
||||||
class = "popup-button";
|
|
||||||
label = "";
|
|
||||||
on_click = "popup:toggle";
|
|
||||||
type = "button";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
class = "popup-button-box";
|
|
||||||
popup = [
|
|
||||||
{
|
|
||||||
class = "audio-box";
|
|
||||||
orientation = "vertical";
|
|
||||||
type = "box";
|
|
||||||
widgets = [
|
|
||||||
{
|
|
||||||
class = "audio-button-box";
|
|
||||||
orientation = "horizontal";
|
|
||||||
type = "box";
|
|
||||||
widgets = [
|
|
||||||
{
|
|
||||||
class = "audio-button";
|
|
||||||
label = "";
|
|
||||||
on_click = "!audioControl bluetooth";
|
|
||||||
type = "button";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
class = "audio-button";
|
|
||||||
label = "";
|
|
||||||
on_click = "!audioControl internal";
|
|
||||||
type = "button";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
class = "audio-label";
|
|
||||||
label = "Output";
|
|
||||||
type = "label";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
class = "audio-slider";
|
|
||||||
length = 200;
|
|
||||||
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
|
|
||||||
step = 1.0;
|
|
||||||
type = "slider";
|
|
||||||
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
|
||||||
label = "{{pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }'}}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
class = "audio-label";
|
|
||||||
label = "Input";
|
|
||||||
type = "label";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
class = "audio-slider";
|
|
||||||
length = 200;
|
|
||||||
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
|
|
||||||
step = 1.0;
|
|
||||||
type = "slider";
|
|
||||||
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = "custom";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bar = [
|
|
||||||
{
|
|
||||||
class = "popup-button";
|
|
||||||
label = "";
|
|
||||||
on_click = "!oxidash";
|
|
||||||
type = "button";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
class = "popup-button-box";
|
|
||||||
type = "custom";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
bar = [
|
|
||||||
{
|
|
||||||
class = "popup-button";
|
|
||||||
label = "";
|
|
||||||
on_click = "popup:toggle";
|
|
||||||
type = "button";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
type = "custom";
|
|
||||||
class = "popup-button-box";
|
|
||||||
popup = [
|
|
||||||
{
|
|
||||||
class = "system-box";
|
|
||||||
type = "box";
|
|
||||||
widgets = [
|
|
||||||
{
|
|
||||||
class = "memory-usage";
|
|
||||||
format = [
|
|
||||||
" {cpu_percent}%"
|
|
||||||
" {memory_used} / {memory_total} GB ({memory_percent}%)"
|
|
||||||
" {swap_used} / {swap_total} GB ({swap_free} | {swap_percent}%)"
|
|
||||||
" {uptime}"
|
|
||||||
];
|
|
||||||
direction = "vertical";
|
|
||||||
interval = {
|
|
||||||
memory = 30;
|
|
||||||
cpu = 5;
|
|
||||||
temps = 5;
|
|
||||||
disks = 5;
|
|
||||||
network = 5;
|
|
||||||
};
|
|
||||||
type = "sys_info";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
type = "tray";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
position = "top";
|
|
||||||
height = 10;
|
|
||||||
anchor_to_edges = true;
|
|
||||||
start = [
|
|
||||||
{
|
|
||||||
type = "workspaces";
|
|
||||||
all_monitors = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
center = [
|
|
||||||
{
|
|
||||||
format = "%I:%M";
|
|
||||||
format_popup = "%a %d:%m/%I:%M %p";
|
|
||||||
locale = "en_US";
|
|
||||||
type = "clock";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
monitorConfig = useBatteryModule:
|
|
||||||
if config.mods.ironbar.ironbarSingleMonitor
|
|
||||||
then {
|
|
||||||
monitors.${
|
|
||||||
if config.mods.wm.monitors != []
|
|
||||||
then (builtins.elemAt config.mods.wm.monitors 0).name
|
|
||||||
else ""
|
|
||||||
} =
|
|
||||||
ironbarDefaultConfig useBatteryModule;
|
|
||||||
}
|
|
||||||
else ironbarDefaultConfig useBatteryModule;
|
|
||||||
in {
|
|
||||||
options.mods = {
|
|
||||||
ironbar = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables ironbar";
|
|
||||||
};
|
|
||||||
ironbarSingleMonitor = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to use ironbar on a single monitor.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useDefaultConfig = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured ironbar config.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useBatteryModule = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Whether to use the preconfigured battery module.";
|
|
||||||
};
|
|
||||||
customConfig = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Custom ironbar configuration.
|
|
||||||
Will be merged with default configuration if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useDefaultCss = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured ironbar css.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
customCss = lib.mkOption {
|
|
||||||
default = '''';
|
|
||||||
example = ''
|
|
||||||
#window {
|
|
||||||
border-radius: none;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = ''
|
|
||||||
Custom ironbar css.
|
|
||||||
Will be merged with default css if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) (
|
|
||||||
lib.optionalAttrs (options ? programs.ironbar) {
|
|
||||||
programs.ironbar = {
|
|
||||||
package = mkDashDefault pkgs.ironbar;
|
|
||||||
enable = true;
|
|
||||||
style =
|
|
||||||
if config.mods.ironbar.useDefaultCss
|
|
||||||
then
|
|
||||||
/*
|
|
||||||
css
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
@import url("/home/${username}/.config/gtk-3.0/gtk.css");
|
|
||||||
|
|
||||||
@define-color primary #${scheme.base0D};
|
|
||||||
@define-color warning #${scheme.base0F};
|
|
||||||
@define-color muted-text #${scheme.base05};
|
|
||||||
@define-color background #${scheme.base00};
|
|
||||||
@define-color secondary-background #${scheme.base02};
|
|
||||||
|
|
||||||
* slider {
|
|
||||||
background-color: @muted-text;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
transition:
|
|
||||||
background-color 0.15s ease-in-out,
|
|
||||||
color 0.15s ease-in-out,
|
|
||||||
border-color 0.15s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.background {
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
padding: 0px;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.focused {
|
|
||||||
padding: 0px 5px;
|
|
||||||
background-color: @background;
|
|
||||||
font-size: 17px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bar #end {
|
|
||||||
margin: 0px 5px;
|
|
||||||
padding: 0px 5px;
|
|
||||||
background-color: @background;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-button {
|
|
||||||
padding: 0px 5px 0px 2px;
|
|
||||||
border-radius: 100%;
|
|
||||||
font-size: 13px;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-button-box {
|
|
||||||
padding: 2px 0px;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom button {
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom button:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* audio */
|
|
||||||
.audio-box * {
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-box {
|
|
||||||
padding: 2em;
|
|
||||||
background-color: @background;
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 1px solid @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-slider {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px 5px 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-label {
|
|
||||||
font-size: 19px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-button {
|
|
||||||
padding: 10px 10px 10px 8px;
|
|
||||||
min-height: 35px;
|
|
||||||
min-width: 35px;
|
|
||||||
margin: 0px 1em;
|
|
||||||
border-radius: 50%;
|
|
||||||
font-size: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-button-box {
|
|
||||||
padding: 0px 2.5em 0px 2.5em;
|
|
||||||
margin: 0em 0em 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* clock */
|
|
||||||
.clock {
|
|
||||||
padding: 0px 5px;
|
|
||||||
font-size: 20px;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clock:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-clock {
|
|
||||||
font-size: 2.5em;
|
|
||||||
background-color: @background;
|
|
||||||
border: 1px solid @primary;
|
|
||||||
padding: 0.5em;
|
|
||||||
border-radius: 8px;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-clock .calendar-clock {
|
|
||||||
margin: 0.25em 0em 0.75em;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-clock .calendar {
|
|
||||||
font-size: 24px;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-clock .calendar:selected {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* workspaces */
|
|
||||||
.workspaces {
|
|
||||||
margin: 0px 0px 0px 5px;
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: @background;
|
|
||||||
padding: 2px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces .item {
|
|
||||||
margin: 0px 3px;
|
|
||||||
font-size: 13px;
|
|
||||||
border-radius: 100%;
|
|
||||||
padding: 0px 3px 0px 3px;
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces .item:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces .item:not(.visible) {
|
|
||||||
color: @warning;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces .item.focused {
|
|
||||||
background-color: @primary;
|
|
||||||
color: @background;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* battery */
|
|
||||||
.battery {
|
|
||||||
font-size: 13px;
|
|
||||||
padding: 0px 4px 0px 0px;
|
|
||||||
margin: 2px 0px 2px 0px;
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.battery .icon {
|
|
||||||
opacity: 0.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.battery .label {
|
|
||||||
margin: 2px 0px 0px -8px;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.battery:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-battery {
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
border-radius: 8px;
|
|
||||||
border: 1px solid @primary;
|
|
||||||
padding: 16px;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* music */
|
|
||||||
.music {
|
|
||||||
font-size: 13px;
|
|
||||||
padding: 0px 4px 0px 3px;
|
|
||||||
margin: 2px 0px 2px 0px;
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.music:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
border-radius: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.music .contents .icon {
|
|
||||||
margin: 0px 0px 0px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-music {
|
|
||||||
background-color: @background;
|
|
||||||
color: @primary;
|
|
||||||
border-radius: 8px;
|
|
||||||
border: 1px solid @primary;
|
|
||||||
padding: 16px;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-music .controls .btn-prev {
|
|
||||||
color: @primary;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-music .controls .btn-next {
|
|
||||||
color: @primary;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-music .controls .btn-play {
|
|
||||||
color: @primary;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-music .controls .btn-pause {
|
|
||||||
color: @primary;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* system */
|
|
||||||
.system-box {
|
|
||||||
padding: 16px;
|
|
||||||
color: @primary;
|
|
||||||
border: 1px solid @primary;
|
|
||||||
background-color: @background;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.memory-usage {
|
|
||||||
font-size: 15px;
|
|
||||||
color: @primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.memory-usage:hover {
|
|
||||||
background-color: @secondary-background;
|
|
||||||
}
|
|
||||||
''
|
|
||||||
+ config.mods.ironbar.customCss
|
|
||||||
else config.mods.ironbar.customCss;
|
|
||||||
features = [
|
|
||||||
#"another_feature"
|
|
||||||
];
|
|
||||||
config =
|
|
||||||
if config.mods.ironbar.useDefaultConfig
|
|
||||||
then
|
|
||||||
lib.mkMerge
|
|
||||||
[
|
|
||||||
(monitorConfig config.mods.ironbar.useBatteryModule)
|
|
||||||
config.mods.ironbar.customConfig
|
|
||||||
]
|
|
||||||
else config.mods.ironbar.customConfig;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
options,
|
options,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.kde = {
|
options.mods.kde = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -19,4 +20,5 @@
|
||||||
services.desktopManager.plasma6.enable = true;
|
services.desktopManager.plasma6.enable = true;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,11 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
options.mods = {
|
options.mods = {
|
||||||
kdeConnect.enable = lib.mkOption {
|
kde_connect.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
example = true;
|
example = true;
|
||||||
|
|
@ -16,7 +18,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.mods.kdeConnect.enable (
|
config = lib.mkIf config.mods.kde_connect.enable (
|
||||||
lib.optionalAttrs (options ? networking.firewall) {
|
lib.optionalAttrs (options ? networking.firewall) {
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
allowedTCPPortRanges = [
|
allowedTCPPortRanges = [
|
||||||
|
|
@ -35,8 +37,6 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs (options ? home.packages) {
|
// lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ kdeconnect ]; }
|
||||||
home.packages = with pkgs; [kdePackages.kdeconnect-kde];
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.keepassxc = {
|
options.mods.keepassxc = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -12,14 +13,30 @@
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables the piper program and its daemon";
|
description = "Enables the piper program and its daemon";
|
||||||
};
|
};
|
||||||
useConfig = lib.mkOption {
|
use_cache_config = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Whether to overwrite the config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
|
description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
|
||||||
};
|
};
|
||||||
config = lib.mkOption {
|
cache_config = lib.mkOption {
|
||||||
default = ''
|
default = ''
|
||||||
|
[General]
|
||||||
|
LastDatabases=/home/${config.conf.username}/Music/Passwords.kdbx
|
||||||
|
LastActiveDatabase=/home/${config.conf.username}/Music/Passwords.kdbx
|
||||||
|
LastOpenedDatabases=/home/${config.conf.username}/Music/Passwords.kdbx
|
||||||
|
LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0P\0\x61\0s\0s\0w\0o\0r\0\x64\0s\0.\0k\0\x64\0\x62\0x\0\0\0\n\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x)
|
||||||
|
'';
|
||||||
|
example = "";
|
||||||
|
type = lib.types.lines;
|
||||||
|
description = "Cache config to be used.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.keepassxc.enable (
|
||||||
|
lib.optionalAttrs (options ? home.file) {
|
||||||
|
home.packages = [ pkgs.keepassxc ];
|
||||||
|
xdg.configFile."keepassxc/keepassxc.ini" = {
|
||||||
|
text = ''
|
||||||
[General]
|
[General]
|
||||||
ConfigVersion=2
|
ConfigVersion=2
|
||||||
|
|
||||||
|
|
@ -40,35 +57,10 @@
|
||||||
[Security]
|
[Security]
|
||||||
EnableCopyOnDoubleClick=true
|
EnableCopyOnDoubleClick=true
|
||||||
'';
|
'';
|
||||||
example = "";
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = "Cache config to be used.";
|
|
||||||
};
|
|
||||||
useCacheConfig = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
|
|
||||||
};
|
|
||||||
cacheConfig = lib.mkOption {
|
|
||||||
default = '''';
|
|
||||||
example = ''
|
|
||||||
[General]
|
|
||||||
LastDatabases=/path/to/database
|
|
||||||
'';
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = "Cache config to be used.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.keepassxc.enable (
|
|
||||||
lib.optionalAttrs (options ? home.file) {
|
|
||||||
home.packages = [pkgs.keepassxc];
|
|
||||||
xdg.configFile."keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.useConfig {
|
|
||||||
text = config.mods.keepassxc.config;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.useCacheConfig {
|
home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config {
|
||||||
text = config.mods.keepassxc.cacheConfig;
|
text = config.mods.keepassxc.cache_config;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,10 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
let
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
base16 = pkgs.callPackage inputs.base16.lib { };
|
||||||
|
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
|
||||||
hexTable = {
|
hexTable = {
|
||||||
"0" = "1";
|
"0" = "1";
|
||||||
"1" = "0";
|
"1" = "0";
|
||||||
|
|
@ -31,9 +32,10 @@
|
||||||
"#"
|
"#"
|
||||||
+ lib.strings.concatStrings (
|
+ lib.strings.concatStrings (
|
||||||
(lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00))
|
(lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00))
|
||||||
++ [hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}"]
|
++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ]
|
||||||
);
|
);
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.mods.kitty = {
|
options.mods.kitty = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -41,20 +43,14 @@ in {
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables kitty";
|
description = "Enables kitty";
|
||||||
};
|
};
|
||||||
useDefaultConfig = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enable default config for kitty";
|
|
||||||
};
|
|
||||||
additionalConfig = lib.mkOption {
|
additionalConfig = lib.mkOption {
|
||||||
default = {};
|
default = { };
|
||||||
example = {
|
example = {
|
||||||
# for the insane people out there :P
|
# for the insane people out there :P
|
||||||
enable_audio_bell = "yes";
|
enable_audio_bell = "yes";
|
||||||
};
|
};
|
||||||
type = with lib.types; attrsOf anything;
|
type = with lib.types; attrsOf anything;
|
||||||
description = "Additional kitty configuration. Will be the only configuration if useDefaultConfig is disabled.";
|
description = "Additional kitty configuration";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.kitty.enable (
|
config = lib.mkIf config.mods.kitty.enable (
|
||||||
|
|
@ -64,10 +60,7 @@ in {
|
||||||
};
|
};
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings =
|
settings = {
|
||||||
if config.mods.kitty.useDefaultConfig
|
|
||||||
then
|
|
||||||
{
|
|
||||||
enable_audio_bell = "no";
|
enable_audio_bell = "no";
|
||||||
window_alert_on_bell = "no";
|
window_alert_on_bell = "no";
|
||||||
cursor_blink_interval = "0";
|
cursor_blink_interval = "0";
|
||||||
|
|
@ -95,34 +88,26 @@ in {
|
||||||
inactive_tab_foreground = "#" + scheme.base04;
|
inactive_tab_foreground = "#" + scheme.base04;
|
||||||
tab_bar_background = "#" + scheme.base01;
|
tab_bar_background = "#" + scheme.base01;
|
||||||
|
|
||||||
mark1_foreground = "#" + scheme.base00;
|
color0 = base;
|
||||||
mark1_background = "#" + scheme.base07;
|
|
||||||
mark2_foreground = "#" + scheme.base00;
|
|
||||||
mark2_background = "#" + scheme.base0E;
|
|
||||||
mark3_foreground = "#" + scheme.base00;
|
|
||||||
mark3_background = "#" + scheme.base08;
|
|
||||||
|
|
||||||
color0 = "#" + scheme.base03;
|
|
||||||
color1 = "#" + scheme.base08;
|
color1 = "#" + scheme.base08;
|
||||||
color2 = "#" + scheme.base0B;
|
color2 = "#" + scheme.base0B;
|
||||||
color3 = "#" + scheme.base0A;
|
color3 = "#" + scheme.base0A;
|
||||||
color4 = "#" + scheme.base0D;
|
color4 = "#" + scheme.base0D;
|
||||||
color5 = "#" + scheme.base06;
|
color5 = "#" + scheme.base0E;
|
||||||
color6 = "#" + scheme.base0C;
|
color6 = "#" + scheme.base0C;
|
||||||
color7 = "#" + scheme.base07;
|
color7 = "#" + scheme.base05;
|
||||||
|
|
||||||
color8 = "#" + scheme.base04;
|
color8 = "#" + scheme.base03;
|
||||||
color9 = "#" + scheme.base08;
|
color9 = "#" + scheme.base08;
|
||||||
color10 = "#" + scheme.base0B;
|
color10 = "#" + scheme.base0B;
|
||||||
color11 = "#" + scheme.base0A;
|
color11 = "#" + scheme.base0A;
|
||||||
color12 = "#" + scheme.base0D;
|
color12 = "#" + scheme.base0D;
|
||||||
color13 = "#" + scheme.base06;
|
color13 = "#" + scheme.base0E;
|
||||||
color14 = "#" + scheme.base0C;
|
color14 = "#" + scheme.base0C;
|
||||||
color15 = "#" + scheme.base0B;
|
color15 = "#" + scheme.base07;
|
||||||
|
|
||||||
shell = lib.mkIf config.mods.fish.enable "fish";
|
shell = lib.mkIf config.mods.fish.enable "fish";
|
||||||
}
|
} // config.mods.kitty.additionalConfig;
|
||||||
// config.mods.kitty.additionalConfig
|
|
||||||
else config.mods.kitty.additionalConfig;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.media = {
|
options.mods.media = {
|
||||||
useBasePackages = lib.mkOption {
|
useBasePackages = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -13,111 +14,50 @@
|
||||||
description = "Default media packages (If disabled, only the additional packages will be installed)";
|
description = "Default media packages (If disabled, only the additional packages will be installed)";
|
||||||
};
|
};
|
||||||
additionalPackages = lib.mkOption {
|
additionalPackages = lib.mkOption {
|
||||||
default = [];
|
default = [ ];
|
||||||
example = [pkgs.flatpak];
|
example = [ pkgs.flatpak ];
|
||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = ''
|
description = ''
|
||||||
Additional media packages.
|
Additional media packages.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
specialPrograms = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
special program configuration to be added which require programs.something notation.
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
specialServices = lib.mkOption {
|
config = (
|
||||||
default = {};
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
example = {};
|
home.packages = config.mods.media.additionalPackages;
|
||||||
type = with lib.types; attrsOf anything;
|
}
|
||||||
description = ''
|
// (lib.mkIf config.mods.media.useBasePackages (
|
||||||
special services configuration to be added which require an services.something notation.
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
'';
|
home.packages = with pkgs; [
|
||||||
};
|
|
||||||
filePickerPortal = lib.mkOption {
|
|
||||||
default = "Term";
|
|
||||||
example = "Gnome";
|
|
||||||
type = with lib.types; oneOf [(enum ["Gnome" "Kde" "Lxqt" "Gtk" "Term" "Default"]) str];
|
|
||||||
description = ''
|
|
||||||
The file picker portal to use (set with shana).
|
|
||||||
Default removes the config, allowing you to set it yourself.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
termFileChooserConfig = lib.mkOption {
|
|
||||||
default = {
|
|
||||||
cmd = "${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh";
|
|
||||||
default_dir = "$HOME";
|
|
||||||
};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = ''
|
|
||||||
Termfilechooser config
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.optionalAttrs (options ? home.packages) {
|
|
||||||
xdg.configFile."xdg-desktop-portal-termfilechooser/config" = lib.mkIf (config.mods.media.filePickerPortal != "Term") {
|
|
||||||
source = (pkgs.formats.ini {}).generate "termchooser" {
|
|
||||||
filechooser = config.mods.media.termFileChooserConfig;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg.configFile."xdg-desktop-portal-shana/config.toml" = lib.mkIf (config.mods.media.filePickerPortal != "Default") {
|
|
||||||
source = let
|
|
||||||
name =
|
|
||||||
if (config.mods.media.filePickerPortal == "Term")
|
|
||||||
then "org.freedesktop.impl.portal.desktop.termfilechooser"
|
|
||||||
else config.mods.media.filePickerPortal;
|
|
||||||
in
|
|
||||||
(pkgs.formats.toml {}).generate "shana" {
|
|
||||||
open_file = name;
|
|
||||||
save_file = name;
|
|
||||||
save_files = name;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages =
|
|
||||||
if config.mods.media.useBasePackages
|
|
||||||
then
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
# base audio
|
# base audio
|
||||||
pipewire
|
pipewire
|
||||||
wireplumber
|
wireplumber
|
||||||
# audio control
|
# audio control
|
||||||
playerctl
|
playerctl
|
||||||
# images
|
# images
|
||||||
eog
|
imv
|
||||||
# videos
|
# videos
|
||||||
mpv
|
mpv
|
||||||
# pdf
|
# pdf
|
||||||
zathura
|
zathura
|
||||||
evince
|
evince
|
||||||
libreoffice-fresh
|
libreoffice-fresh
|
||||||
onlyoffice-desktopeditors
|
onlyoffice-bin
|
||||||
pdftk
|
pdftk
|
||||||
pdfpc
|
pdfpc
|
||||||
polylux2pdfpc
|
polylux2pdfpc
|
||||||
# spotify
|
# spotify
|
||||||
# video editing
|
# video editing
|
||||||
kdePackages.kdenlive
|
kdenlive
|
||||||
# image creation
|
# image creation
|
||||||
inkscape
|
inkscape
|
||||||
gimp
|
gimp
|
||||||
krita
|
krita
|
||||||
yt-dlp
|
yt-dlp
|
||||||
]
|
];
|
||||||
++ config.mods.media.additionalPackages
|
programs.obs-studio.enable = true;
|
||||||
else config.mods.media.additionalPackages;
|
programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ];
|
||||||
programs =
|
|
||||||
if config.mods.media.useBasePackages
|
|
||||||
then
|
|
||||||
{
|
|
||||||
obs-studio.enable = true;
|
|
||||||
obs-studio.plugins = with pkgs; [obs-studio-plugins.obs-vaapi];
|
|
||||||
}
|
}
|
||||||
// config.mods.media.specialPrograms
|
))
|
||||||
else config.mods.media.specialPrograms;
|
);
|
||||||
services = config.mods.media.specialServices;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,161 +0,0 @@
|
||||||
# Copyright (c) 2020-2021 Mihai Fufezan
|
|
||||||
# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix
|
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
browserName =
|
|
||||||
if (builtins.isString config.mods.homePackages.browser)
|
|
||||||
then config.mods.homePackages.browser
|
|
||||||
else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram
|
|
||||||
then config.mods.homePackages.browser.meta.mainProgram
|
|
||||||
else config.mods.homePackages.browser.pname;
|
|
||||||
in {
|
|
||||||
options.mods.mime = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables mime handling with nix";
|
|
||||||
};
|
|
||||||
imageTypes = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"png"
|
|
||||||
"svg"
|
|
||||||
"jpeg"
|
|
||||||
"gif"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Image mime handlers";
|
|
||||||
};
|
|
||||||
videoTypes = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"mp4"
|
|
||||||
"avi"
|
|
||||||
"mkv"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Video mime handlers";
|
|
||||||
};
|
|
||||||
audioTypes = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"mp3"
|
|
||||||
"flac"
|
|
||||||
"wav"
|
|
||||||
"aac"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Audio mime handlers";
|
|
||||||
};
|
|
||||||
browserTypes = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"json"
|
|
||||||
"x-extension-htm"
|
|
||||||
"x-extension-html"
|
|
||||||
"x-extension-shtml"
|
|
||||||
"x-extension-xht"
|
|
||||||
"x-extension-xhtml"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Browser mime handlers";
|
|
||||||
};
|
|
||||||
browserXTypes = lib.mkOption {
|
|
||||||
default = [
|
|
||||||
"about"
|
|
||||||
"ftp"
|
|
||||||
"http"
|
|
||||||
"https"
|
|
||||||
"unknown"
|
|
||||||
];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Browser X mime handlers";
|
|
||||||
};
|
|
||||||
browserApplications = lib.mkOption {
|
|
||||||
default = ["${browserName}"];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Applications used for handling browser mime types";
|
|
||||||
};
|
|
||||||
imageApplications = lib.mkOption {
|
|
||||||
default = ["eog"];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Applications used for handling image mime types";
|
|
||||||
};
|
|
||||||
videoApplications = lib.mkOption {
|
|
||||||
default = ["mpv"];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Applications used for handling video mime types";
|
|
||||||
};
|
|
||||||
audioApplications = lib.mkOption {
|
|
||||||
default = ["io.bassi.Amberol"];
|
|
||||||
example = [];
|
|
||||||
type = with lib.types; listOf str;
|
|
||||||
description = "Applications used for handling audio mime types";
|
|
||||||
};
|
|
||||||
# TODO additional config
|
|
||||||
};
|
|
||||||
config = lib.optionalAttrs (options ? home) {
|
|
||||||
xdg = let
|
|
||||||
xdgAssociations = type: program: list:
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map (e: {
|
|
||||||
name = "${type}/${e}";
|
|
||||||
value = program;
|
|
||||||
})
|
|
||||||
list
|
|
||||||
);
|
|
||||||
|
|
||||||
imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes;
|
|
||||||
videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes;
|
|
||||||
audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes;
|
|
||||||
browserAc =
|
|
||||||
(xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes)
|
|
||||||
// (
|
|
||||||
xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications
|
|
||||||
config.mods.mime.browserXTypes
|
|
||||||
);
|
|
||||||
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) (
|
|
||||||
# TODO make configurable
|
|
||||||
{
|
|
||||||
"application/pdf" = ["org.pwmt.zathura-pdf-mupdf"];
|
|
||||||
"text/html" = config.mods.mime.browserApplications;
|
|
||||||
"text/plain" = ["neovide"];
|
|
||||||
"x-scheme-handler/chrome" = ["com.brave.browser"];
|
|
||||||
"inode/directory" = ["yazi"];
|
|
||||||
}
|
|
||||||
// imageAc
|
|
||||||
// audioAc
|
|
||||||
// videoAc
|
|
||||||
// browserAc
|
|
||||||
);
|
|
||||||
in
|
|
||||||
lib.mkIf config.mods.mime.enable {
|
|
||||||
enable = true;
|
|
||||||
cacheHome = config.home.homeDirectory + "/.local/cache";
|
|
||||||
|
|
||||||
mimeApps = {
|
|
||||||
enable = true;
|
|
||||||
defaultApplications = associations;
|
|
||||||
};
|
|
||||||
|
|
||||||
userDirs = {
|
|
||||||
enable = mkDashDefault true;
|
|
||||||
createDirectories = mkDashDefault true;
|
|
||||||
extraConfig = {
|
|
||||||
XDG_SCREENSHOTS_DIR = mkDashDefault "${config.xdg.userDirs.pictures}/Screenshots";
|
|
||||||
pws = mkDashDefault "${config.home.homeDirectory}/pws";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.ncspot = {
|
options.mods.ncspot = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -12,13 +13,16 @@
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables ncspot with a config";
|
description = "Enables ncspot with a config";
|
||||||
};
|
};
|
||||||
config = lib.mkOption {
|
};
|
||||||
default = {
|
config = lib.mkIf config.mods.ncspot.enable (
|
||||||
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
|
home.packages = with pkgs; [ ncspot ];
|
||||||
|
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" {
|
||||||
notify = true;
|
notify = true;
|
||||||
shuffle = true;
|
shuffle = true;
|
||||||
cover_max_scale = 2;
|
cover_max_scale = 2;
|
||||||
initial_screen = "library";
|
initial_screen = "library";
|
||||||
library_tabs = ["playlists"];
|
library_tabs = [ "playlists" ];
|
||||||
theme = {
|
theme = {
|
||||||
background = "#1a1b26";
|
background = "#1a1b26";
|
||||||
primary = "#9aa5ce";
|
primary = "#9aa5ce";
|
||||||
|
|
@ -49,16 +53,6 @@
|
||||||
body = "%title";
|
body = "%title";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "config";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.ncspot.enable (
|
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
|
||||||
home.packages = with pkgs; [ncspot];
|
|
||||||
xdg.configFile."ncspot/config.toml".source =
|
|
||||||
lib.mkIf config.mods.ncspot.useConfig (pkgs.formats.toml {}).generate "ncspot" config.mods.ncspot.config;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{lib, ...}: {
|
{ lib, ... }:
|
||||||
|
{
|
||||||
options.mods = {
|
options.mods = {
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -8,19 +9,19 @@
|
||||||
description = "Enable nextcloud";
|
description = "Enable nextcloud";
|
||||||
};
|
};
|
||||||
username = lib.mkOption {
|
username = lib.mkOption {
|
||||||
default = "";
|
default = "DashieTM";
|
||||||
example = "globi";
|
example = "globi";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Your username";
|
description = "Your username";
|
||||||
};
|
};
|
||||||
url = lib.mkOption {
|
url = lib.mkOption {
|
||||||
default = "";
|
default = "cloud.dashie.org";
|
||||||
example = "cloud.globi.org";
|
example = "cloud.globi.org";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Your url";
|
description = "Your url";
|
||||||
};
|
};
|
||||||
synclist = lib.mkOption {
|
synclist = lib.mkOption {
|
||||||
default = [];
|
default = [ ];
|
||||||
example = [
|
example = [
|
||||||
{
|
{
|
||||||
name = "sync globi folder";
|
name = "sync globi folder";
|
||||||
|
|
@ -35,4 +36,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,392 +0,0 @@
|
||||||
{
|
|
||||||
mkDashDefault,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
defaultWmConf = import ../../lib/wm.nix;
|
|
||||||
in {
|
|
||||||
options.mods.niri = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enable Niri
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
useDefaultConfig = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Use preconfigured Niri config.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
customConfig = lib.mkOption {
|
|
||||||
default = '''';
|
|
||||||
example = '''';
|
|
||||||
type = lib.types.lines;
|
|
||||||
description = ''
|
|
||||||
Custom Niri configuration.
|
|
||||||
Will be merged with default configuration if enabled.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.mods.niri.enable (
|
|
||||||
lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
|
|
||||||
# TODO deduplicate and abstract away base window management config
|
|
||||||
# install Niri related packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
xorg.xprop
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
satty
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-gnome
|
|
||||||
kdePackages.xdg-desktop-portal-kde
|
|
||||||
xdg-desktop-portal-shana
|
|
||||||
copyq
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
niri
|
|
||||||
xwayland-satellite
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile."niri/config.kdl" = let
|
|
||||||
mkNiriMod = mods:
|
|
||||||
builtins.map (mod:
|
|
||||||
if mod == "Mod"
|
|
||||||
then config.mods.wm.modKey + "+"
|
|
||||||
else "${mod}" + "+")
|
|
||||||
mods
|
|
||||||
|> lib.strings.concatStringsSep "";
|
|
||||||
mkNiriArg = args:
|
|
||||||
if args != []
|
|
||||||
then let
|
|
||||||
concatCommand = lib.strings.concatStringsSep " " args;
|
|
||||||
validCommand = builtins.replaceStrings [''"''] [''\"''] concatCommand;
|
|
||||||
in "\"${validCommand}\""
|
|
||||||
else "";
|
|
||||||
mkNiriCommand = bind: let
|
|
||||||
args = bind.args or [];
|
|
||||||
in
|
|
||||||
if bind.command == "quit"
|
|
||||||
then "quit;"
|
|
||||||
else if bind.command == "killActive"
|
|
||||||
then "close-window;"
|
|
||||||
else if bind.command == "moveFocusTop"
|
|
||||||
then "focus-window-up;"
|
|
||||||
else if bind.command == "focusWorkspace"
|
|
||||||
then "focus-workspace" + " " + mkNiriArg args + ";"
|
|
||||||
else if bind.command == "moveWindowRight"
|
|
||||||
then "move-column-right-or-to-monitor-right;"
|
|
||||||
else if bind.command == "moveWindowDown"
|
|
||||||
then "move-window-down;"
|
|
||||||
else if bind.command == "moveWindowLeft"
|
|
||||||
then "move-column-left-or-to-monitor-left;"
|
|
||||||
else if bind.command == "moveWindowUp"
|
|
||||||
then "move-window-up;"
|
|
||||||
else if bind.command == "moveFocusUp"
|
|
||||||
then "focus-window-up;"
|
|
||||||
else if bind.command == "moveFocusRight"
|
|
||||||
then "focus-column-or-monitor-right;"
|
|
||||||
else if bind.command == "moveFocusDown"
|
|
||||||
then "focus-window-down;"
|
|
||||||
else if bind.command == "moveFocusLeft"
|
|
||||||
then "focus-column-or-monitor-left;"
|
|
||||||
else if bind.command == "toggleFloating"
|
|
||||||
then "toggle-window-floating;"
|
|
||||||
else if bind.command == "toggleFullscreen"
|
|
||||||
then "fullscreen-window;"
|
|
||||||
else if bind.command == "moveToWorkspace"
|
|
||||||
then "move-window-to-workspace" + " " + mkNiriArg args + ";"
|
|
||||||
else if bind.command == "spawn"
|
|
||||||
then "spawn" + " " + mkNiriArg args + ";"
|
|
||||||
else if bind.command == "spawn-sh"
|
|
||||||
then "spawn-sh" + " " + mkNiriArg args + ";"
|
|
||||||
else if bind.command.niri != null
|
|
||||||
then bind.command.niri + " " + mkNiriArg args + ";"
|
|
||||||
else "";
|
|
||||||
|
|
||||||
mkNiriBinds = cfg:
|
|
||||||
'' binds {
|
|
||||||
''
|
|
||||||
+ (
|
|
||||||
(
|
|
||||||
builtins.map (
|
|
||||||
bind:
|
|
||||||
/*
|
|
||||||
kdl
|
|
||||||
*/
|
|
||||||
if bind ? key && bind ? command
|
|
||||||
then ''
|
|
||||||
${mkNiriMod (bind.modKeys or [])}${bind.key} ${
|
|
||||||
if
|
|
||||||
bind ? meta
|
|
||||||
&& bind.meta ? niri
|
|
||||||
then
|
|
||||||
(
|
|
||||||
if
|
|
||||||
bind.meta.niri ? desc
|
|
||||||
&& bind.meta.niri.desc != ""
|
|
||||||
then "hotkey-overlay-title=\"" + bind.meta.niri.desc + "\""
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
+ " "
|
|
||||||
+ (
|
|
||||||
if
|
|
||||||
bind.meta.niri ? repeat
|
|
||||||
&& bind.meta.niri.repeat
|
|
||||||
then "repeat=true"
|
|
||||||
else "repeat=false"
|
|
||||||
)
|
|
||||||
+ " "
|
|
||||||
+ (
|
|
||||||
if
|
|
||||||
bind.meta.niri ? allowWhileLocked
|
|
||||||
&& bind.meta.niri.allowWhileLocked
|
|
||||||
then "allow-when-locked=true"
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
+ " "
|
|
||||||
+ (
|
|
||||||
if
|
|
||||||
bind.meta.niri ? allowInhibit
|
|
||||||
&& bind.meta.niri.allowInhibit
|
|
||||||
then "allow-inhibiting=true"
|
|
||||||
else "allow-inhibiting=false"
|
|
||||||
)
|
|
||||||
else ""
|
|
||||||
} { ${
|
|
||||||
mkNiriCommand bind
|
|
||||||
} }
|
|
||||||
''
|
|
||||||
else ''''
|
|
||||||
)
|
|
||||||
((
|
|
||||||
cfg.mods.wm.binds
|
|
||||||
++ (
|
|
||||||
if cfg.mods.wm.useDefaultBinds
|
|
||||||
then defaultWmConf.defaultBinds cfg
|
|
||||||
else []
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|> builtins.filter (bind: !(hasInvalidCustomCommand bind)))
|
|
||||||
)
|
|
||||||
|> lib.strings.concatLines
|
|
||||||
)
|
|
||||||
+ ''
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
mkVrr = vrr:
|
|
||||||
if vrr
|
|
||||||
then "true"
|
|
||||||
else "false";
|
|
||||||
mkNiriMonitors = cfg:
|
|
||||||
(builtins.map (
|
|
||||||
monitor:
|
|
||||||
# TODO vrr
|
|
||||||
/*
|
|
||||||
kdl
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
output "${monitor.name}" {
|
|
||||||
variable-refresh-rate on-demand=${mkVrr monitor.vrr}
|
|
||||||
mode "${builtins.toString monitor.resolutionX}x${builtins.toString monitor.resolutionY}@${builtins.toString monitor.refreshrate}"
|
|
||||||
scale ${builtins.toString monitor.scale}
|
|
||||||
transform "${
|
|
||||||
if (monitor.transform == "0")
|
|
||||||
then "normal"
|
|
||||||
else monitor.transform
|
|
||||||
}"
|
|
||||||
position x=${builtins.toString monitor.positionX} y=${builtins.toString monitor.positionY}
|
|
||||||
}
|
|
||||||
''
|
|
||||||
)
|
|
||||||
cfg.mods.wm.monitors)
|
|
||||||
|> lib.strings.concatLines;
|
|
||||||
mkNiriWorkspaces = cfg:
|
|
||||||
(builtins.map (
|
|
||||||
workspace:
|
|
||||||
/*
|
|
||||||
kdl
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
workspace "${workspace.name}" {
|
|
||||||
open-on-output "${workspace.monitor}"
|
|
||||||
}
|
|
||||||
''
|
|
||||||
)
|
|
||||||
cfg.mods.wm.workspaces)
|
|
||||||
|> lib.strings.concatLines;
|
|
||||||
mkNiriWindowRules = cfg: (
|
|
||||||
(
|
|
||||||
builtins.map (
|
|
||||||
rule:
|
|
||||||
/*
|
|
||||||
kdl
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
window-rule {
|
|
||||||
${rule}
|
|
||||||
}
|
|
||||||
''
|
|
||||||
)
|
|
||||||
(
|
|
||||||
cfg.mods.wm.windowRules.niri
|
|
||||||
++ (
|
|
||||||
if cfg.mods.wm.useDefaultWindowRules
|
|
||||||
then defaultWmConf.defaultWindowRules.niri
|
|
||||||
else []
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|> lib.strings.concatLines
|
|
||||||
);
|
|
||||||
hasInvalidCustomCommand = bind: !(bind ? command) || (!(builtins.isString bind.command) && bind.command.niri or null == null);
|
|
||||||
mkNiriEnv = config: let
|
|
||||||
defaultEnv =
|
|
||||||
if config.mods.wm.useDefaultEnv
|
|
||||||
then defaultWmConf.defaultEnv config
|
|
||||||
else {
|
|
||||||
all = {};
|
|
||||||
niri = {};
|
|
||||||
};
|
|
||||||
userEnv =
|
|
||||||
if config.mods.wm.env ? all
|
|
||||||
then config.mods.wm.env.all // config.mods.wm.env.niri
|
|
||||||
else config.mods.wm.env;
|
|
||||||
env =
|
|
||||||
userEnv
|
|
||||||
// defaultEnv.all
|
|
||||||
// defaultEnv.niri;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
environment {
|
|
||||||
''
|
|
||||||
+ (
|
|
||||||
lib.attrsets.mapAttrsToList (
|
|
||||||
name: value: "${name} \"${value}\""
|
|
||||||
)
|
|
||||||
env
|
|
||||||
|> lib.strings.concatLines
|
|
||||||
)
|
|
||||||
+ ''
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
mkNiriAutoStart = config: let
|
|
||||||
defaultStartup =
|
|
||||||
if config.mods.wm.useDefaultStartup
|
|
||||||
then defaultWmConf.defaultStartup config
|
|
||||||
else {
|
|
||||||
all = {};
|
|
||||||
niri = {};
|
|
||||||
};
|
|
||||||
userStartup =
|
|
||||||
if config.mods.wm.startup ? all
|
|
||||||
then config.mods.wm.startup.all ++ config.mods.wm.startup.niri
|
|
||||||
else config.mods.wm.startup;
|
|
||||||
autoStart = userStartup ++ defaultStartup.all ++ defaultStartup.niri;
|
|
||||||
in
|
|
||||||
(builtins.map (value: "spawn-at-startup \"${value}\"")
|
|
||||||
autoStart)
|
|
||||||
|> lib.strings.concatLines;
|
|
||||||
defaultConfig =
|
|
||||||
/*
|
|
||||||
kdl
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
input {
|
|
||||||
keyboard {
|
|
||||||
xkb {
|
|
||||||
layout "enIntUmlaut"
|
|
||||||
}
|
|
||||||
repeat-delay 200
|
|
||||||
repeat-rate 25
|
|
||||||
numlock
|
|
||||||
}
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
tap
|
|
||||||
natural-scroll
|
|
||||||
}
|
|
||||||
|
|
||||||
mouse {
|
|
||||||
accel-speed 0.2
|
|
||||||
accel-profile "flat"
|
|
||||||
}
|
|
||||||
|
|
||||||
focus-follows-mouse max-scroll-amount="25%"
|
|
||||||
}
|
|
||||||
|
|
||||||
layout {
|
|
||||||
// Set gaps around windows in logical pixels.
|
|
||||||
gaps 10
|
|
||||||
center-focused-column "never"
|
|
||||||
always-center-single-column
|
|
||||||
|
|
||||||
preset-column-widths {
|
|
||||||
proportion 0.33333
|
|
||||||
proportion 0.5
|
|
||||||
proportion 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
default-column-width { proportion 0.5; }
|
|
||||||
focus-ring {
|
|
||||||
width 3
|
|
||||||
inactive-color "#505050"
|
|
||||||
active-gradient from="#ff0000" to="#00ff00" angle=45
|
|
||||||
}
|
|
||||||
|
|
||||||
border {
|
|
||||||
off
|
|
||||||
}
|
|
||||||
|
|
||||||
// You can enable drop shadows for windows.
|
|
||||||
shadow {
|
|
||||||
on
|
|
||||||
softness 30
|
|
||||||
spread 5
|
|
||||||
offset x=0 y=5
|
|
||||||
color "#0007"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
${
|
|
||||||
if config.mods.gpu.nvidia.enable
|
|
||||||
then ''
|
|
||||||
debug {
|
|
||||||
wait-for-frame-completion-before-queueing
|
|
||||||
}
|
|
||||||
''
|
|
||||||
else ''''
|
|
||||||
}
|
|
||||||
|
|
||||||
// Autostart
|
|
||||||
|
|
||||||
hotkey-overlay {
|
|
||||||
skip-at-startup
|
|
||||||
}
|
|
||||||
|
|
||||||
prefer-no-csd
|
|
||||||
''
|
|
||||||
+ mkNiriMonitors config
|
|
||||||
+ mkNiriBinds config
|
|
||||||
+ mkNiriWorkspaces config
|
|
||||||
+ mkNiriWindowRules config
|
|
||||||
+ mkNiriEnv config
|
|
||||||
+ mkNiriAutoStart config;
|
|
||||||
in
|
|
||||||
mkDashDefault {
|
|
||||||
text =
|
|
||||||
if config.mods.niri.useDefaultConfig
|
|
||||||
then defaultConfig + config.mods.niri.customConfig
|
|
||||||
else config.mods.niri.customConfig;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
options,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods = {
|
|
||||||
onedrive = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enable onedrive program and service";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.onedrive.enable (
|
|
||||||
lib.optionalAttrs (options ? environment) {
|
|
||||||
services.onedrive.enable = true;
|
|
||||||
environment.systemPackages = [pkgs.onedrive];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -4,13 +4,13 @@
|
||||||
options,
|
options,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./oxidash.nix
|
./oxidash.nix
|
||||||
./oxinoti.nix
|
./oxinoti.nix
|
||||||
./oxipaste.nix
|
|
||||||
./oxirun.nix
|
|
||||||
./oxishut.nix
|
./oxishut.nix
|
||||||
|
./oxipaste.nix
|
||||||
];
|
];
|
||||||
options.mods.oxi = {
|
options.mods.oxi = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -34,12 +34,6 @@
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables hyprdock";
|
description = "Enables hyprdock";
|
||||||
};
|
};
|
||||||
settings = lib.mkOption {
|
|
||||||
default = {};
|
|
||||||
example = {};
|
|
||||||
type = with lib.types; attrsOf anything;
|
|
||||||
description = "settings for hyprdock";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
oxicalc = {
|
oxicalc = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
|
|
@ -53,10 +47,7 @@
|
||||||
config = lib.mkIf config.mods.oxi.enable (
|
config = lib.mkIf config.mods.oxi.enable (
|
||||||
lib.optionalAttrs (options ? home.packages) {
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
programs = {
|
programs = {
|
||||||
hyprdock = {
|
hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true;
|
||||||
inherit (config.mods.oxi.hyprdock) enable;
|
|
||||||
inherit (config.mods.oxi.hyprdock) settings;
|
|
||||||
};
|
|
||||||
oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true;
|
oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true;
|
||||||
ReSet = lib.mkIf config.mods.oxi.ReSet.enable {
|
ReSet = lib.mkIf config.mods.oxi.ReSet.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -74,8 +65,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs (options ? services.logind && options ? services.logind.settings) {
|
|
||||||
services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore";
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,9 @@
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
{
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
in {
|
|
||||||
options.mods.oxi.oxidash = {
|
options.mods.oxi.oxidash = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -24,53 +18,51 @@ in {
|
||||||
programs.oxidash.enable = true;
|
programs.oxidash.enable = true;
|
||||||
xdg.configFile."oxidash/style.css" = {
|
xdg.configFile."oxidash/style.css" = {
|
||||||
text = ''
|
text = ''
|
||||||
@define-color bg #${scheme.base00};
|
|
||||||
@define-color primary #${scheme.base0D};
|
|
||||||
|
|
||||||
#MainWindow {
|
#MainWindow {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
background-color: transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#MainBox {
|
#MainBox {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border: 1px solid @primary;
|
|
||||||
background-color: @bg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#MainButtonBox {
|
#MainButtonBox {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 5px 0px 5px 0px;
|
margin: 5px 0px 5px 0px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: solid 1px @primary;
|
border: solid 2px #327cd5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#DoNotDisturbButton {}
|
#DoNotDisturbButton {
|
||||||
|
}
|
||||||
|
|
||||||
#ExitButton {}
|
#ExitButton {
|
||||||
|
}
|
||||||
|
|
||||||
#ClearNotificationsButton {}
|
#ClearNotificationsButton {
|
||||||
|
}
|
||||||
|
|
||||||
#NotificationsWindow {}
|
#NotificationsWindow {
|
||||||
|
}
|
||||||
|
|
||||||
.debugimage {
|
.debugimage {
|
||||||
border: solid 3px @primary;
|
border: solid 3px blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Notification {
|
.Notification {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 5px 0px 5px 0px;
|
margin: 5px 0px 5px 0px;
|
||||||
border: solid 1px @primary;
|
border: solid 2px #327cd5;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CloseNotificationButton {
|
.CloseNotificationButton {
|
||||||
margin: 0px 5px 0px 10px;
|
margin: 0px 5px 0px 10px;
|
||||||
}
|
}
|
||||||
|
.PictureButtonBox {
|
||||||
.PictureButtonBox {}
|
}
|
||||||
|
.BaseBox {
|
||||||
.BaseBox {}
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,9 @@
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
# at time of using this here, stylix might not be evaluated yet
|
{
|
||||||
# hence ensure it is by using base16 mkSchemeAttrs
|
|
||||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
|
||||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
|
||||||
in {
|
|
||||||
options.mods.oxi.oxinoti = {
|
options.mods.oxi.oxinoti = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -23,16 +17,9 @@ in {
|
||||||
lib.optionalAttrs (options ? xdg.configFile) {
|
lib.optionalAttrs (options ? xdg.configFile) {
|
||||||
programs.oxinoti.enable = true;
|
programs.oxinoti.enable = true;
|
||||||
xdg.configFile."oxinoti/style.css" = {
|
xdg.configFile."oxinoti/style.css" = {
|
||||||
text =
|
text = # css
|
||||||
# css
|
|
||||||
''
|
''
|
||||||
@import url("/home/dashie/.config/gtk-3.0/gtk.css");
|
@import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css");
|
||||||
|
|
||||||
@define-color bg #${scheme.base00};
|
|
||||||
@define-color bghover #${scheme.base02};
|
|
||||||
@define-color primary #${scheme.base0D};
|
|
||||||
@define-color red #${scheme.base08};
|
|
||||||
@define-color green #${scheme.base0B};
|
|
||||||
|
|
||||||
#MainWindow {
|
#MainWindow {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
@ -47,37 +34,31 @@ in {
|
||||||
}
|
}
|
||||||
|
|
||||||
.NotificationBox {
|
.NotificationBox {
|
||||||
background-color: @bg;
|
background-color: #353747;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: solid 1px;
|
border: solid 1px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
padding: 5px;
|
||||||
|
|
||||||
.NotificationBox button {
|
|
||||||
background-color: @bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
.NotificationBox button:hover {
|
|
||||||
background-color: @bghover;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.NotificationLow {
|
.NotificationLow {
|
||||||
border-color: @green;
|
border-color: green;
|
||||||
}
|
}
|
||||||
|
|
||||||
.NotificationNormal {
|
.NotificationNormal {
|
||||||
border-color: @primary;
|
border-color: purple;
|
||||||
}
|
}
|
||||||
|
|
||||||
.NotificationUrgent {
|
.NotificationUrgent {
|
||||||
border-color: @red;
|
border-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.miscbox {
|
.miscbox {
|
||||||
margin: 0px 10px 0px 0px;
|
margin: 0px 10px 0px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bodybox {}
|
.bodybox {
|
||||||
|
}
|
||||||
|
|
||||||
.imagebox {
|
.imagebox {
|
||||||
margin: 0px 0px 0px 10px;
|
margin: 0px 0px 0px 10px;
|
||||||
|
|
@ -103,7 +84,8 @@ in {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {}
|
.image {
|
||||||
|
}
|
||||||
|
|
||||||
.bold {
|
.bold {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.oxi.oxipaste = {
|
options.mods.oxi.oxipaste = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.oxi.oxirun = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables OxiRun";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf (config.mods.oxi.oxirun.enable && config.mods.oxi.enable) (
|
|
||||||
lib.optionalAttrs (options ? xdg.configFile) {
|
|
||||||
programs.oxirun.enable = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
config,
|
config,
|
||||||
options,
|
options,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.oxi.oxishut = {
|
options.mods.oxi.oxishut = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.piper = {
|
options.mods.piper = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
@ -14,7 +15,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.mkIf config.mods.piper.enable (
|
config = lib.mkIf config.mods.piper.enable (
|
||||||
lib.optionalAttrs (options ? services.ratbagd) {services.ratbagd.enable = true;}
|
lib.optionalAttrs (options ? services.ratbagd) { services.ratbagd.enable = true; }
|
||||||
// lib.optionalAttrs (options ? home.packages) {home.packages = with pkgs; [piper];}
|
// lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ piper ]; }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.mods.plymouth = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Enables the plymouth";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkIf config.mods.plymouth.enable (
|
|
||||||
lib.optionalAttrs (options ? boot.plymouth) {boot.plymouth.enable = true;}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
34
modules/programs/podman.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
options,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.mods.podman = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables and configures podman";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.podman.enable (
|
||||||
|
lib.optionalAttrs (options ? virtualisation.podman) {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
podman-tui
|
||||||
|
podman-compose
|
||||||
|
dive
|
||||||
|
];
|
||||||
|
virtualisation = {
|
||||||
|
containers.enable = true;
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.printing = {
|
options.mods.printing = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -16,23 +17,15 @@
|
||||||
config = lib.mkIf config.mods.printing.enable (
|
config = lib.mkIf config.mods.printing.enable (
|
||||||
lib.optionalAttrs (options ? services.printing) {
|
lib.optionalAttrs (options ? services.printing) {
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
environment.systemPackages = with pkgs; [
|
services.printing.enable = true;
|
||||||
simple-scan
|
services.printing.browsing = true;
|
||||||
];
|
services.printing.drivers = [ pkgs.hplip ];
|
||||||
hardware.sane.enable = true;
|
services.printing.startWhenNeeded = true; # optional
|
||||||
services = {
|
services.avahi = {
|
||||||
printing = {
|
|
||||||
enable = true;
|
|
||||||
browsing = true;
|
|
||||||
drivers = [pkgs.hplip];
|
|
||||||
startWhenNeeded = true; # optional
|
|
||||||
};
|
|
||||||
avahi = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
nssmdns4 = true;
|
nssmdns4 = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,38 +4,45 @@
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.mods.scripts = {
|
options.mods.scripts = {
|
||||||
changeBrightness = lib.mkOption {
|
change-brightness = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables the change-brightness script";
|
description = "Enables the change-brightness script";
|
||||||
};
|
};
|
||||||
audioControl = lib.mkOption {
|
audio-control = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
example = false;
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = "Enables the audioControl script";
|
description = "Enables the audio-control script";
|
||||||
};
|
};
|
||||||
scripts = lib.mkOption {
|
scripts = lib.mkOption {
|
||||||
default = [];
|
default = [ ];
|
||||||
example = [];
|
example = [ ];
|
||||||
description = "More scripts to be passed. (check existing ones for types and examples)";
|
description = "More scripts to be passed. (check existing ones for types and examples)";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = lib.optionalAttrs (options ? home.packages) {
|
config = (
|
||||||
home.packages =
|
lib.optionalAttrs (options ? home.packages) {
|
||||||
[
|
home.packages = [
|
||||||
(lib.mkIf config.mods.scripts.changeBrightness (
|
(lib.mkIf config.mods.scripts.change-brightness (
|
||||||
pkgs.writeShellScriptBin "changeBrightness" ''
|
pkgs.writeShellScriptBin "change-brightness" ''
|
||||||
|
set_brightness() {
|
||||||
brightnessctl set "$1"
|
brightnessctl set "$1"
|
||||||
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
|
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
|
||||||
notify-send -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%"
|
dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" == "brightness" ]; then
|
||||||
|
set_brightness "$2"
|
||||||
|
fi
|
||||||
''
|
''
|
||||||
))
|
))
|
||||||
(lib.mkIf config.mods.scripts.audioControl (
|
(lib.mkIf config.mods.scripts.audio-control (
|
||||||
pkgs.writeShellScriptBin "audioControl" ''
|
pkgs.writeShellScriptBin "audio-control" ''
|
||||||
ncspot() {
|
ncspot() {
|
||||||
NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n')
|
NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n')
|
||||||
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
|
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
|
||||||
|
|
@ -117,7 +124,7 @@
|
||||||
fi
|
fi
|
||||||
''
|
''
|
||||||
))
|
))
|
||||||
]
|
] ++ config.mods.scripts.scripts;
|
||||||
++ config.mods.scripts.scripts;
|
}
|
||||||
};
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||