Compare commits
No commits in common. "main" and "nix" have entirely different histories.
34
.github/workflows/docs.yaml
vendored
|
|
@ -1,34 +0,0 @@
|
|||
# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
||||
name: Docs
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: nixos-latest
|
||||
steps:
|
||||
- name: Nix Config
|
||||
run: |
|
||||
mkdir -p $HOME/.config
|
||||
mkdir -p $HOME/.config/nix
|
||||
echo experimental-features = nix-command flakes pipe-operators >> $HOME/.config/nix/nix.conf
|
||||
echo access-tokens = github.com=${{ secrets.GITHUBTOKEN }} >> $HOME/.config/nix/nix.conf
|
||||
nix profile install nixpkgs#nodejs
|
||||
- name: Build docs
|
||||
run: nix -L build git+https://git.dashie.org/${{ forgejo.repository }}.git?rev=${{ forgejo.sha }}#docs --no-write-lock-file
|
||||
- name: Prepare docs for upload
|
||||
run: cp -r --dereference --no-preserve=mode,ownership result/ public/
|
||||
# - name: Upload artifact
|
||||
# uses: https://data.forgejo.org/forgejo/upload-artifact@v4
|
||||
# with:
|
||||
# path: public/
|
||||
- name: Publish Page
|
||||
uses: https://data.forgejo.org/actions/git-pages@v2
|
||||
with:
|
||||
site: https://username.pages.dashie.org/reponame/
|
||||
token: ${{ forge.token }}
|
||||
source: public/
|
||||
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
|
||||
29
.github/workflows/release.yaml
vendored
|
|
@ -1,29 +0,0 @@
|
|||
# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
||||
name: Release
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
jobs:
|
||||
build:
|
||||
name: Release
|
||||
permissions: write-all
|
||||
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: Build ISO
|
||||
run: nix build github:${{ github.repository }}/${{ github.sha }}#iso --no-write-lock-file
|
||||
- name: Prepare ISO for upload
|
||||
run: |
|
||||
cp -r --dereference --no-preserve=mode,ownership result/iso/DashNix.iso DashNix.iso
|
||||
- name: upload ISO
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: |
|
||||
DashNix.iso
|
||||
15
.gitignore
vendored
|
|
@ -1,3 +1,12 @@
|
|||
result/*
|
||||
result
|
||||
flake.lock
|
||||
/nvim/plugged/*
|
||||
gtk-3.0/bookmarks
|
||||
gtk-3.0/servers
|
||||
gtk-4.0/servers
|
||||
/fish/fish_variables
|
||||
fish/fish_variables
|
||||
fish/*.tmp.*
|
||||
copyq/copyq.lock
|
||||
copyq/copyq_geometry.*
|
||||
copyq/copyq_tab*
|
||||
nvim/lazy-lock.json
|
||||
ncspot/*.cbor
|
||||
|
|
|
|||
841
LICENSE
|
|
@ -1,841 +0,0 @@
|
|||
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
|
||||
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.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
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
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
docs/src/README.md
|
||||
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 |
BIN
base/black.jpg
|
Before Width: | Height: | Size: 127 KiB |
|
|
@ -1,174 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
hostName,
|
||||
modulesPath,
|
||||
...
|
||||
}: let
|
||||
username = config.conf.username;
|
||||
in {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
wsl.enable = mkDashDefault config.conf.wsl;
|
||||
|
||||
# Bootloader.
|
||||
boot = lib.mkIf (!config.conf.wsl) {
|
||||
consoleLogLevel = mkDashDefault 0;
|
||||
|
||||
lanzaboote = lib.mkIf config.conf.secureBoot {
|
||||
enable = mkDashDefault true;
|
||||
pkiBundle = mkDashDefault "/var/lib/sbctl";
|
||||
settings.reboot-for-bitlocker = mkDashDefault true;
|
||||
};
|
||||
|
||||
loader = {
|
||||
systemd-boot = {
|
||||
enable =
|
||||
if config.conf.secureBoot
|
||||
then lib.mkForce false
|
||||
else if config.conf.useSystemdBootloader
|
||||
then true
|
||||
else mkDashDefault false;
|
||||
configurationLimit = 5;
|
||||
};
|
||||
efi.canTouchEfiVariables = mkDashDefault true;
|
||||
};
|
||||
|
||||
kernelPackages = mkDashDefault pkgs.linuxPackages_latest;
|
||||
initrd = {
|
||||
verbose = mkDashDefault false;
|
||||
availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
};
|
||||
kernelParams =
|
||||
[
|
||||
''resume="PARTLABEL=SWAP"''
|
||||
''quiet''
|
||||
''udev.log_level=3''
|
||||
]
|
||||
++ config.conf.bootParams;
|
||||
};
|
||||
|
||||
networking = {
|
||||
useDHCP = mkDashDefault true;
|
||||
networkmanager.enable = mkDashDefault true;
|
||||
hostName = mkDashDefault hostName;
|
||||
};
|
||||
|
||||
time = {
|
||||
timeZone = mkDashDefault config.conf.timezone;
|
||||
hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime;
|
||||
};
|
||||
|
||||
i18n.defaultLocale = mkDashDefault config.conf.locale;
|
||||
|
||||
services = {
|
||||
lorri.enable = mkDashDefault true;
|
||||
xserver.enable = mkDashDefault true;
|
||||
fstrim.enable = mkDashDefault true;
|
||||
pulseaudio.enable = mkDashDefault false;
|
||||
pipewire = {
|
||||
enable = mkDashDefault true;
|
||||
alsa = {
|
||||
enable = mkDashDefault true;
|
||||
support32Bit = mkDashDefault true;
|
||||
};
|
||||
jack.enable = mkDashDefault true;
|
||||
pulse.enable = mkDashDefault true;
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.hostPlatform = mkDashDefault config.conf.system;
|
||||
nix = {
|
||||
gc = {
|
||||
automatic = mkDashDefault true;
|
||||
dates = mkDashDefault "weekly";
|
||||
options = mkDashDefault "--delete-older-than 7d --delete-generations +5";
|
||||
};
|
||||
settings = {
|
||||
trusted-users = [username];
|
||||
auto-optimise-store = mkDashDefault true;
|
||||
|
||||
builders-use-substitutes = mkDashDefault true;
|
||||
|
||||
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";
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
cpu.${config.conf.cpu}.updateMicrocode =
|
||||
mkDashDefault
|
||||
config.hardware.enableRedistributableFirmware;
|
||||
};
|
||||
|
||||
security.rtkit.enable = mkDashDefault true;
|
||||
|
||||
environment.variables = {
|
||||
XDG_CACHE_HOME = mkDashDefault "$HOME/.cache";
|
||||
DIRENV_LOG_FORMAT = mkDashDefault "";
|
||||
QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct";
|
||||
};
|
||||
|
||||
# allows user change later on
|
||||
users = {
|
||||
mutableUsers = mkDashDefault true;
|
||||
users.${username} = {
|
||||
isNormalUser = mkDashDefault true;
|
||||
description = mkDashDefault username;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"gamemode"
|
||||
"docker"
|
||||
"vboxusers"
|
||||
"video"
|
||||
"audio"
|
||||
"scanner"
|
||||
"lp"
|
||||
];
|
||||
packages = with pkgs; [
|
||||
home-manager
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
# 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
|
||||
password = mkDashDefault "firstlogin";
|
||||
};
|
||||
};
|
||||
}
|
||||
24
base/env.nix
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
environment = {
|
||||
variables = {
|
||||
GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
|
||||
NEOVIDE_MAXIMIZED = mkDashDefault "0";
|
||||
GPG_TTY = mkDashDefault "$(tty)";
|
||||
EDITOR = mkDashDefault "neovide --no-fork";
|
||||
SUDO_EDITOR = mkDashDefault "neovide --no-fork";
|
||||
SCRIPTS = mkDashDefault "$HOME/.config/scripts";
|
||||
};
|
||||
sessionVariables = {
|
||||
NIXOS_OZONE_WL = mkDashDefault "1";
|
||||
GOPATH = mkDashDefault "$HOME/.go";
|
||||
FLAKE = mkDashDefault config.conf.nixosConfigPath;
|
||||
NH_FLAKE = mkDashDefault config.conf.nixosConfigPath;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix
|
||||
{
|
||||
pkgs,
|
||||
buildSystems,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
makeOptionsDoc = configuration: pkgs.nixosOptionsDoc {options = configuration;};
|
||||
generateDocs = obj: ''
|
||||
touch src/${obj.fst}.md
|
||||
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
|
||||
'';
|
||||
summaryAppend = name: ''
|
||||
echo "- [${name}](${name}.md)" >> src/SUMMARY.md
|
||||
'';
|
||||
system = (buildSystems {root = ../example/.;})."example".options;
|
||||
makeOptionsDocPrograms = names: pkgs.nixosOptionsDoc {options = lib.attrByPath (lib.splitString "." names) null system.mods;};
|
||||
conf = makeOptionsDoc system.conf;
|
||||
basePath = ../modules/programs;
|
||||
pathToAttrs = path:
|
||||
lib.attrsets.mapAttrsToList (
|
||||
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 deduplicatedNames;
|
||||
docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists deduplicatedNames mods));
|
||||
summary = lib.strings.concatStringsSep " " (map summaryAppend deduplicatedNames);
|
||||
in
|
||||
pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "dashNix-book";
|
||||
src = ./.;
|
||||
|
||||
patchPhase = ''
|
||||
sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md
|
||||
${docs}
|
||||
echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md
|
||||
${summary}
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
${pkgs.mdbook}/bin/mdbook build --dest-dir $out
|
||||
'';
|
||||
}
|
||||
|
|
@ -1,329 +0,0 @@
|
|||
<div align = center>
|
||||
|
||||

|
||||
|
||||
</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
|
||||
|
||||
This flake is intended to be used as an input to your own NixOS configuration:
|
||||
|
||||
```nix
|
||||
dashNix = {
|
||||
url = "github:Xetibo/DashNix";
|
||||
inputs = {
|
||||
# ensure these are here to update the packages on your own
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
stable.follows = "stable";
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
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
|
||||
builders-use-substitutes = true;
|
||||
|
||||
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
|
||||
nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; };
|
||||
```
|
||||
|
||||
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.
|
||||
The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional)
|
||||
|
||||
|- flake.nix\
|
||||
|- flake.lock\
|
||||
|- hosts/\
|
||||
|--- system1/\
|
||||
|------ configuration.nix (required)\
|
||||
|------ hardware.nix (optional)\
|
||||
|------ home.nix (optional)\
|
||||
|--- system2/\
|
||||
|------ configuration.nix (required)\
|
||||
|------ hardware.nix (optional)\
|
||||
|------ home.nix (optional)\
|
||||
|--- system3/\
|
||||
|------ configuration.nix (required)\
|
||||
|------ hardware.nix (optional)\
|
||||
|------ home.nix (optional)
|
||||
|
||||
Here is a minimal required configuration.nix (the TODOs mention a required change):
|
||||
|
||||
```nix
|
||||
{config, ...}: {
|
||||
# TODO denote important changes
|
||||
|
||||
# variables for system
|
||||
conf = {
|
||||
# TODO your username
|
||||
username = "YOURNAME";
|
||||
# TODO only needed when you use intel -> amd is default
|
||||
# cpu = "intel";
|
||||
# TODO your xkb layout
|
||||
locale = "something.UTF-8";
|
||||
# TODO your timezone
|
||||
timezone = "CONTINENT/CITY";
|
||||
};
|
||||
|
||||
# modules
|
||||
mods = {
|
||||
# default disk config has root home boot and swap partition, overwrite if you want something different
|
||||
sops.enable = false;
|
||||
nextcloud.enable = false;
|
||||
wm.monitors = [
|
||||
# Example
|
||||
# {
|
||||
# name = "DP-1";
|
||||
# resolutionX = 3440;
|
||||
# resolutionY = 1440;
|
||||
# refreshrate = 180;
|
||||
# positionX = 2560;
|
||||
# positionY = 0;
|
||||
# scale = 1;
|
||||
# transform = "0";
|
||||
# vrr = false;
|
||||
# }
|
||||
];
|
||||
gpu.nvidia.enable = true;
|
||||
kdeConnect.enable = true;
|
||||
# login manager:
|
||||
# default is greetd
|
||||
# greetd = { };
|
||||
# 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.
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## First Login
|
||||
|
||||
After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like.
|
||||
|
||||
## Configuring pkgs
|
||||
|
||||
While DashNix offers a default pkgs config, you may want to permit an unsecure packages,
|
||||
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
|
||||
nixosConfigurations =
|
||||
inputs.dashNix.dashNixLib.buildSystems {
|
||||
root = ./stable;
|
||||
inherit stableBundle;
|
||||
overridePkgs = true;
|
||||
}
|
||||
// inputs.dashNix.dashNixLib.buildSystems {
|
||||
inherit unstableBundle;
|
||||
root = ./unstable;
|
||||
};
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
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
|
||||
- bluetooth : Configures/enables bluetooth and installs tools for bluetooth
|
||||
- coding packages : A list of coding packages to be installed by default
|
||||
- drives : A drive configuration module
|
||||
- firefox: Enables and configures firefox (extensions and settings)
|
||||
- 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
|
||||
- gpu : GPU settings (AMD)
|
||||
- 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
|
||||
- keepassxc : Configures keepassxc
|
||||
- kitty: Enables and configures kitty terminal
|
||||
- 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
|
||||
- plymouth: enable or disable plymouth
|
||||
- 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
|
||||
- xkb: Keyboard layout configuration
|
||||
- xone : Installs the xone driver
|
||||
- yazi: Installs yazi and sets custom keybinds
|
||||
|
||||
# Credits
|
||||
|
||||
- [Fufexan](https://github.com/fufexan) for the xdg-mime config:
|
||||
- [Catppuccin](https://github.com/catppuccin) for base16 colors and zen-browser css
|
||||
- [Danth](https://github.com/danth) for providing a base for the nix docs
|
||||
- [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 +0,0 @@
|
|||
# This file handles the basic configuration for settings like language, timezone, input, cpu etc.
|
||||
|
|
@ -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 |
|
|
@ -1 +0,0 @@
|
|||
# This file handles configuration of individual modules.
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
{
|
||||
description = "some dots";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
|
||||
stable.url = "github:NixOs/nixpkgs/nixos-24.05";
|
||||
dashNix = {
|
||||
url = "github:Xetibo/DashNix";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
stable.follows = "stable";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs: {
|
||||
nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems {root = ./.;};
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
builders-use-substitutes = true;
|
||||
|
||||
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="
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
{config, ...}: {
|
||||
# TODO denote important changes
|
||||
|
||||
# variables for system
|
||||
conf = {
|
||||
# TODO your username
|
||||
username = "exampleName";
|
||||
# TODO only needed when you use intel -> amd is default
|
||||
# cpu = "intel";
|
||||
# TODO your xkb layout
|
||||
locale = "en_US.UTF-8";
|
||||
# TODO your timezone
|
||||
timezone = "Europe/Zurich";
|
||||
};
|
||||
|
||||
# modules
|
||||
mods = {
|
||||
# default disk config has root home boot and swap partition, overwrite if you want something different
|
||||
sops.enable = false;
|
||||
nextcloud.enable = false;
|
||||
wm.monitors = [
|
||||
# Example
|
||||
# {
|
||||
# name = "DP-1";
|
||||
# resolutionX = 3440;
|
||||
# resolutionY = 1440;
|
||||
# refreshrate = 180;
|
||||
# positionX = 2560;
|
||||
# positionY = 0;
|
||||
# scale = 1;
|
||||
# transform = "0";
|
||||
# vrr = false;
|
||||
# }
|
||||
];
|
||||
gpu.nvidia.enable = true;
|
||||
kdeConnect.enable = true;
|
||||
# login manager:
|
||||
# default is greetd
|
||||
# greetd = { };
|
||||
# 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.
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
# this file adds custom NixOS configuration
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
# this file adds custom home-manager configuration
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# Secrets
|
||||
|
||||
This file is for sops-nix and is also where your keys for various secrets will be stored.
|
||||
113
flake.nix
|
|
@ -1,113 +0,0 @@
|
|||
{
|
||||
description = "DashNix";
|
||||
|
||||
inputs = {
|
||||
unstable.url = "github:NixOs/nixpkgs/nixos-unstable";
|
||||
stable.url = "github:NixOs/nixpkgs/nixos-25.05";
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
lanzaboote = {
|
||||
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 = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
cachy.url = "github:xddxdd/nix-cachyos-kernel?rev=bb7b8aa687464f24dcd452354d9621331d6b0737";
|
||||
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
|
||||
ironbar = {
|
||||
url = "github:JakeStanger/ironbar";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
zen-browser.url = "github:youwen5/zen-browser-flake";
|
||||
|
||||
stylix.url = "github:danth/stylix";
|
||||
base16.url = "github:SenchoPens/base16.nix";
|
||||
disko.url = "github:nix-community/disko/latest";
|
||||
|
||||
anyrun.url = "github:Kirottu/anyrun";
|
||||
oxicalc.url = "github:Xetibo/OxiCalc";
|
||||
oxishut.url = "github:Xetibo/OxiShut";
|
||||
oxinoti.url = "github:Xetibo/OxiNoti";
|
||||
oxidash.url = "github:Xetibo/OxiDash";
|
||||
oxipaste.url = "github:Xetibo/OxiPaste";
|
||||
oxirun.url = "github:Xetibo/OxiRun";
|
||||
dashvim.url = "github:Xetibo/DashVim";
|
||||
|
||||
hyprdock.url = "github:Xetibo/hyprdock";
|
||||
reset.url = "github:Xetibo/ReSet";
|
||||
reset-plugins.url = "github:Xetibo/ReSet-Plugins";
|
||||
|
||||
superfreq.url = "github:NotAShelf/superfreq";
|
||||
|
||||
compose.url = "github:garnix-io/nixos-compose";
|
||||
};
|
||||
|
||||
outputs = {self, ...} @ inputs: let
|
||||
currentSystem = "x86_64-linux";
|
||||
permittedPackages = [
|
||||
"olm-3.2.16"
|
||||
];
|
||||
importPkgsFn = import ./lib/importPkgs.nix;
|
||||
defaultConfigureFn = pkgs:
|
||||
importPkgsFn {
|
||||
inherit inputs currentSystem permittedPackages pkgs;
|
||||
};
|
||||
stable = defaultConfigureFn inputs.stable;
|
||||
unstable = defaultConfigureFn inputs.unstable;
|
||||
pkgsDarkreader = defaultConfigureFn inputs.pkgsDarkreader;
|
||||
in rec {
|
||||
dashNixLib = import ./lib {
|
||||
inherit
|
||||
self
|
||||
inputs
|
||||
unstable
|
||||
permittedPackages
|
||||
;
|
||||
dashNixAdditionalProps = {
|
||||
inherit pkgsDarkreader;
|
||||
};
|
||||
system = currentSystem;
|
||||
};
|
||||
docs = import ./docs {
|
||||
inherit inputs;
|
||||
pkgs = unstable;
|
||||
system = currentSystem;
|
||||
inherit (inputs.unstable) lib;
|
||||
inherit (dashNixLib) buildSystems;
|
||||
};
|
||||
lint = inputs.statix.packages.${currentSystem}.default;
|
||||
format = unstable.alejandra;
|
||||
dashNixInputs = inputs;
|
||||
stablePkgs = stable;
|
||||
unstablePkgs = unstable;
|
||||
modules = ./modules;
|
||||
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/
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
100
gtk-4.0/gtk.css
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
Generated with Gradience
|
||||
|
||||
Issues caused by theming should be reported to Gradience repository, and not to upstream
|
||||
|
||||
https://github.com/GradienceTeam/Gradience
|
||||
*/
|
||||
|
||||
@define-color accent_color #a9b1d6;
|
||||
@define-color accent_bg_color #a9b1d6;
|
||||
@define-color accent_fg_color rgba(0, 0, 0, 0.87);
|
||||
@define-color destructive_color #F28B82;
|
||||
@define-color destructive_bg_color #F28B82;
|
||||
@define-color destructive_fg_color rgba(0, 0, 0, 0.87);
|
||||
@define-color success_color #81C995;
|
||||
@define-color success_bg_color #81C995;
|
||||
@define-color success_fg_color rgba(0, 0, 0, 0.87);
|
||||
@define-color warning_color #FDD633;
|
||||
@define-color warning_bg_color #FDD633;
|
||||
@define-color warning_fg_color rgba(0, 0, 0, 0.87);
|
||||
@define-color error_color #F28B82;
|
||||
@define-color error_bg_color #F28B82;
|
||||
@define-color error_fg_color rgba(0, 0, 0, 0.87);
|
||||
@define-color window_bg_color #1a1b26;
|
||||
@define-color window_fg_color #c0caf5;
|
||||
@define-color view_bg_color #1a1b26;
|
||||
@define-color view_fg_color #c0caf5;
|
||||
@define-color headerbar_bg_color #1a1b26;
|
||||
@define-color headerbar_fg_color #c0caf5;
|
||||
@define-color headerbar_border_color rgba(192, 202, 245, 0.12);
|
||||
@define-color headerbar_backdrop_color @window_bg_color;
|
||||
@define-color headerbar_shade_color rgba(0, 0, 0, 0.36);
|
||||
@define-color card_bg_color #1a1b26;
|
||||
@define-color card_fg_color #c0caf5;
|
||||
@define-color card_shade_color rgba(0, 0, 0, 0.36);
|
||||
@define-color dialog_bg_color #1a1b26;
|
||||
@define-color dialog_fg_color #c0caf5;
|
||||
@define-color popover_bg_color #1a1b26;
|
||||
@define-color popover_fg_color #c0caf5;
|
||||
@define-color shade_color rgba(0, 0, 0, 0.36);
|
||||
@define-color scrollbar_outline_color rgba(0, 0, 0, 0.5);
|
||||
@define-color sidebar_bg_color #1a1b26;
|
||||
@define-color sidebar_fg_color #c0caf5;
|
||||
@define-color secondary_sidebar_bg_color #1a1b26;
|
||||
@define-color secondary_sidebar_fg_color #c0caf5;
|
||||
@define-color sidebar_shade_color rgba(0, 0, 0, 0.36);
|
||||
@define-color secondary_sidebar_shade_color rgba(0, 0, 0, 0.36);
|
||||
@define-color thumbnail_bg_color #1a1b26;
|
||||
@define-color thumbnail_fg_color #c0caf5;
|
||||
@define-color sidebar_backdrop_color rgba(192, 202, 245, 0.12);
|
||||
@define-color secondary_sidebar_backdrop_color rgba(192, 202, 245, 0.12);
|
||||
@define-color blue_1 #99c1f1;
|
||||
@define-color blue_2 #62a0ea;
|
||||
@define-color blue_3 #3584e4;
|
||||
@define-color blue_4 #1c71d8;
|
||||
@define-color blue_5 #1a5fb4;
|
||||
@define-color green_1 #8ff0a4;
|
||||
@define-color green_2 #57e389;
|
||||
@define-color green_3 #33d17a;
|
||||
@define-color green_4 #2ec27e;
|
||||
@define-color green_5 #26a269;
|
||||
@define-color yellow_1 #f9f06b;
|
||||
@define-color yellow_2 #f8e45c;
|
||||
@define-color yellow_3 #f6d32d;
|
||||
@define-color yellow_4 #f5c211;
|
||||
@define-color yellow_5 #e5a50a;
|
||||
@define-color orange_1 #ffbe6f;
|
||||
@define-color orange_2 #ffa348;
|
||||
@define-color orange_3 #ff7800;
|
||||
@define-color orange_4 #e66100;
|
||||
@define-color orange_5 #c64600;
|
||||
@define-color red_1 #f66151;
|
||||
@define-color red_2 #ed333b;
|
||||
@define-color red_3 #e01b24;
|
||||
@define-color red_4 #c01c28;
|
||||
@define-color red_5 #a51d2d;
|
||||
@define-color purple_1 #dc8add;
|
||||
@define-color purple_2 #c061cb;
|
||||
@define-color purple_3 #9141ac;
|
||||
@define-color purple_4 #813d9c;
|
||||
@define-color purple_5 #613583;
|
||||
@define-color brown_1 #cdab8f;
|
||||
@define-color brown_2 #b5835a;
|
||||
@define-color brown_3 #986a44;
|
||||
@define-color brown_4 #865e3c;
|
||||
@define-color brown_5 #63452c;
|
||||
@define-color light_1 #ffffff;
|
||||
@define-color light_2 #f6f5f4;
|
||||
@define-color light_3 #deddda;
|
||||
@define-color light_4 #c0bfbc;
|
||||
@define-color light_5 #9a9996;
|
||||
@define-color dark_1 #77767b;
|
||||
@define-color dark_2 #5e5c64;
|
||||
@define-color dark_3 #3d3846;
|
||||
@define-color dark_4 #241f31;
|
||||
@define-color dark_5 #000000;
|
||||
|
||||
.navigation-sidebar {
|
||||
background-color: #1a1b26;
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
username = config.conf.username;
|
||||
in {
|
||||
manual = {
|
||||
html.enable = mkDashDefault false;
|
||||
json.enable = mkDashDefault false;
|
||||
manpages.enable = mkDashDefault false;
|
||||
};
|
||||
|
||||
fonts.fontconfig.enable = mkDashDefault true;
|
||||
|
||||
home = {
|
||||
username = mkDashDefault username;
|
||||
homeDirectory = mkDashDefault "/home/${username}";
|
||||
sessionPath = ["$HOME/.cargo/bin"];
|
||||
|
||||
enableNixpkgsReleaseCheck = mkDashDefault false;
|
||||
sessionVariables = {
|
||||
GOROOT = mkDashDefault "$HOME/.go";
|
||||
QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct";
|
||||
};
|
||||
|
||||
keyboard = mkDashDefault null;
|
||||
};
|
||||
|
||||
programs.nix-index = {
|
||||
enable = mkDashDefault true;
|
||||
enableFishIntegration = mkDashDefault true;
|
||||
};
|
||||
|
||||
nix = {
|
||||
extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) ''
|
||||
!include ${config.sops.secrets.access.path}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
dashNixAdditionalProps,
|
||||
config,
|
||||
homeMods,
|
||||
inputs,
|
||||
lib,
|
||||
additionalHomeConfig,
|
||||
mod,
|
||||
pkgs,
|
||||
root,
|
||||
alternativePkgs,
|
||||
system,
|
||||
stable,
|
||||
unstable,
|
||||
...
|
||||
}: {
|
||||
xdg = {
|
||||
portal.config.common = {
|
||||
default = mkDashDefault "hyprland;gtk";
|
||||
"org.freedesktop.impl.portal.FileChooser" = lib.mkIf (config.mods.media.filePickerPortal != "Default") "shana";
|
||||
};
|
||||
portal = {
|
||||
enable = mkDashDefault true;
|
||||
extraPortals = with pkgs; [
|
||||
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 = {
|
||||
useGlobalPkgs = mkDashDefault true;
|
||||
useUserPackages = mkDashDefault true;
|
||||
extraSpecialArgs = {
|
||||
inherit
|
||||
inputs
|
||||
root
|
||||
alternativePkgs
|
||||
system
|
||||
stable
|
||||
unstable
|
||||
dashNixAdditionalProps
|
||||
;
|
||||
mkDashDefault = import ../lib/override.nix {inherit lib;};
|
||||
};
|
||||
|
||||
users.${config.conf.username} = {
|
||||
disabledModules = ["programs/anyrun.nix"];
|
||||
imports =
|
||||
[
|
||||
./common.nix
|
||||
./themes
|
||||
./sync.nix
|
||||
../lib/foxwrappers.nix
|
||||
]
|
||||
++ homeMods
|
||||
++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig
|
||||
++ lib.optional (builtins.pathExists mod) mod;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
# derived from NixOS wiki
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
username = config.mods.nextcloud.username;
|
||||
password =
|
||||
if (config.sops.secrets ? nextcloud.path)
|
||||
then config.sops.secrets.nextcloud.path
|
||||
else "";
|
||||
url = config.mods.nextcloud.url;
|
||||
synclist = config.mods.nextcloud.synclist;
|
||||
in
|
||||
lib.mkIf config.mods.nextcloud.enable {
|
||||
systemd.user = {
|
||||
services = builtins.listToAttrs (
|
||||
map (opts: {
|
||||
name = "${opts.name}";
|
||||
value = {
|
||||
Unit = {
|
||||
Description = "Auto sync Nextcloud";
|
||||
After = "network-online.target";
|
||||
};
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
|
||||
TimeoutStopSec = "180";
|
||||
KillMode = "process";
|
||||
KillSignal = "SIGINT";
|
||||
};
|
||||
Install.WantedBy = ["multi-user.target"];
|
||||
};
|
||||
})
|
||||
synclist
|
||||
);
|
||||
timers = builtins.listToAttrs (
|
||||
map (opts: {
|
||||
name = "${opts.name}";
|
||||
value = {
|
||||
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
|
||||
Timer.OnBootSec = "1min";
|
||||
Timer.OnUnitActiveSec = "60min";
|
||||
Install.WantedBy = [
|
||||
"multi-user.target"
|
||||
"timers.target"
|
||||
];
|
||||
};
|
||||
})
|
||||
synclist
|
||||
);
|
||||
startServices = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./qt.nix
|
||||
./kdeglobals.nix
|
||||
./oxiced.nix
|
||||
./firefoxTheme.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -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()
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
modulesPath,
|
||||
lib,
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
system = "x86_64-linux";
|
||||
in {
|
||||
imports = ["${modulesPath}/installer/cd-dvd/iso-image.nix"];
|
||||
nixpkgs.hostPlatform = {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
inputs.dashvim.packages.${system}.minimal
|
||||
disko
|
||||
git
|
||||
firefox
|
||||
kitty
|
||||
gnome-disk-utility
|
||||
inputs.disko.packages.${system}.disko-install
|
||||
];
|
||||
|
||||
networking = {
|
||||
wireless.enable = false;
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
|
||||
nix.settings.experimental-features = [
|
||||
"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;
|
||||
settings = {
|
||||
terminal.vt = 1;
|
||||
default_session = {
|
||||
command = "${lib.getExe pkgs.hyprland}";
|
||||
user = "nixos";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
isoImage = {
|
||||
makeEfiBootable = true;
|
||||
makeUsbBootable = true;
|
||||
contents = [
|
||||
{
|
||||
source = "${self}/example";
|
||||
target = "example-config";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
system.stateVersion = "25.11";
|
||||
}
|
||||
292
lib/default.nix
|
|
@ -1,292 +0,0 @@
|
|||
{
|
||||
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,
|
||||
config,
|
||||
}: 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,
|
||||
stablePkgs,
|
||||
unstablePkgs,
|
||||
stableMods,
|
||||
unstableMods,
|
||||
overridePkgs,
|
||||
...
|
||||
}:
|
||||
builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
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.
|
||||
|
||||
A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration.
|
||||
|
||||
The second parameter is the root of your configuration, which should be ./. in most cases.
|
||||
|
||||
`root`
|
||||
|
||||
: the root path of your configuration
|
||||
|
||||
# Example usage
|
||||
:::{.example}
|
||||
```nix
|
||||
nixosConfigurations = buildSystems { root = ./.; };
|
||||
```
|
||||
:::
|
||||
*/
|
||||
# let
|
||||
# paths = builtins.readDir ;
|
||||
# names = lib.lists.remove "default" (
|
||||
# map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths)
|
||||
# );
|
||||
|
||||
# in
|
||||
buildFunc = func: {
|
||||
root,
|
||||
unstableBundle ? {},
|
||||
stableBundle ? {},
|
||||
overridePkgs ? false,
|
||||
...
|
||||
}: let
|
||||
defaultNixosMods = inputs: [
|
||||
inputs.lanzaboote.nixosModules.lanzaboote
|
||||
inputs.nixos-wsl.nixosModules.default
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
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
|
||||
func {
|
||||
inherit lib inputLib stablePkgs unstablePkgs stableMods unstableMods stableInputs unstableInputs root overridePkgs;
|
||||
};
|
||||
|
||||
buildSystems = buildFunc mkNixos;
|
||||
buildHome = buildFunc mkHome;
|
||||
|
||||
buildIso = inputs.unstable.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit self inputs unstable;
|
||||
};
|
||||
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 |
170
modules/conf.nix
|
|
@ -1,170 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.conf = {
|
||||
system = lib.mkOption {
|
||||
default = "x86_64-linux";
|
||||
# no fisherprice unix support
|
||||
type = with lib.types; (enum [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"aarch64-linux-android"
|
||||
]);
|
||||
example = "aarch64-linux";
|
||||
description = ''
|
||||
System architecture.
|
||||
'';
|
||||
};
|
||||
|
||||
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 {
|
||||
# TODO: how to enable arm?
|
||||
default = "amd";
|
||||
type = with lib.types; (enum [
|
||||
"amd"
|
||||
"intel"
|
||||
]);
|
||||
example = "intel";
|
||||
description = ''
|
||||
cpu microcode.
|
||||
'';
|
||||
};
|
||||
|
||||
additionalBootKernalParams = lib.mkOption {
|
||||
default = [];
|
||||
example = [];
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
additional kernelParams passed to bootloader
|
||||
'';
|
||||
};
|
||||
|
||||
bootParams = lib.mkOption {
|
||||
default = [];
|
||||
example = ["resume=something"];
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
Boot params
|
||||
'';
|
||||
};
|
||||
|
||||
kernelOverride = lib.mkOption {
|
||||
default = null;
|
||||
type = with lib.types; nullOr package;
|
||||
description = ''
|
||||
kernel to be used
|
||||
Has no examples as doc complains...
|
||||
#example = pkgs.linuxPackages_xanmod_latest;
|
||||
'';
|
||||
};
|
||||
|
||||
username = lib.mkOption {
|
||||
default = "DashNix";
|
||||
example = "pingpang";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The username.
|
||||
'';
|
||||
};
|
||||
|
||||
timezone = lib.mkOption {
|
||||
default = "Europe/Zurich";
|
||||
example = "Europe/Berlin";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The timezone.
|
||||
'';
|
||||
};
|
||||
|
||||
locale = lib.mkOption {
|
||||
default = "en_US.UTF-8";
|
||||
example = "de_DE.UTF-8";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The locale.
|
||||
'';
|
||||
};
|
||||
|
||||
nixosConfigPath = lib.mkOption {
|
||||
default = "/home/${config.conf.username}/gits/nixos/.";
|
||||
example = "yourpath/.";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The path for your build command, you can then simply type rebuild to switch to a new configuration.
|
||||
'';
|
||||
};
|
||||
|
||||
systemStateVersion = lib.mkOption {
|
||||
example = "24.11";
|
||||
default = "23.05";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
System state version
|
||||
'';
|
||||
};
|
||||
homeStateVersion = lib.mkOption {
|
||||
default = "24.11";
|
||||
example = "23.05";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
Home state version
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
(lib.optionalAttrs (options ? system.stateVersion) {
|
||||
boot = {
|
||||
kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel;
|
||||
kernelParams = config.conf.additionalBootKernalParams;
|
||||
};
|
||||
system.stateVersion = config.conf.systemStateVersion;
|
||||
})
|
||||
// (lib.optionalAttrs (options ? home.stateVersion) {
|
||||
home.stateVersion = config.conf.homeStateVersion;
|
||||
});
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./programs
|
||||
./conf.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods = {
|
||||
acpid.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
example = true;
|
||||
description = ''
|
||||
Enables acpid.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.acpid.enable (
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods = {
|
||||
bluetooth.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
example = true;
|
||||
description = ''
|
||||
Enables bluetooth.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.bluetooth.enable (
|
||||
lib.optionalAttrs (options ? hardware.bluetooth) {
|
||||
hardware.bluetooth = {
|
||||
enable = mkDashDefault true;
|
||||
powerOnBoot = mkDashDefault 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,575 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
options,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: let
|
||||
font_family = "${config.mods.stylix.fonts.monospace.name}";
|
||||
in {
|
||||
options.mods = {
|
||||
coding = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables coding packages.
|
||||
'';
|
||||
};
|
||||
dashvim = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables dashvim package.
|
||||
'';
|
||||
};
|
||||
jetbrains = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
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 {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Use default base packages (only additionalPackages are installed if false)";
|
||||
};
|
||||
additionalPackages = lib.mkOption {
|
||||
default = [];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = "Additional packages to be installed";
|
||||
};
|
||||
languages = {
|
||||
haskell = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables haskell.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
haskellPackages.cabal-install
|
||||
ghc
|
||||
haskellPackages.haskell-language-server
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
haskell packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
typst = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables typst.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
typst
|
||||
tinymist
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
typst packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
go = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables go.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
go
|
||||
gopls
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
Go packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
rust = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables rust.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [rustup];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
Rust packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
ts-js = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables TS/JS.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
nodejs_20
|
||||
deno
|
||||
typescript
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.prettier
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
TS/JS packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
zig = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables zig.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
zig
|
||||
zls
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
zig packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
java = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables java.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
gradle
|
||||
maven
|
||||
jdt-language-server
|
||||
temurin-jre-bin
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
Java packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
dotnet = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables C#/F#.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
#.!
|
||||
(with dotnetCorePackages;
|
||||
combinePackages [
|
||||
sdk_8_0
|
||||
sdk_9_0
|
||||
])
|
||||
csharpier
|
||||
netcoredbg
|
||||
fsharp
|
||||
fsautocomplete
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
C#/F# packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
C-CPP = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables C/C++.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
bear
|
||||
gdb
|
||||
gcc
|
||||
clang-tools
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
C/C++ packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
python = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables python.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
python3
|
||||
python312Packages.python-lsp-server
|
||||
python312Packages.python-lsp-ruff
|
||||
python312Packages.python-lsp-black
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
python packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
configFiles = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables Json/toml/yaml etc.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
#yaml
|
||||
yamlfmt
|
||||
yamllint
|
||||
yaml-language-server
|
||||
|
||||
#json
|
||||
jq
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
packages for said filetypes
|
||||
'';
|
||||
};
|
||||
};
|
||||
bash = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables bash.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
bash-language-server
|
||||
shfmt
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
bash packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
html-css = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables html/css.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
tailwindcss
|
||||
tailwindcss-language-server
|
||||
# html-tidy
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
html/css packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
sql = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables sql.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
nodePackages.sql-formatter
|
||||
sqls
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
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 = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables assembly.
|
||||
'';
|
||||
};
|
||||
packages = lib.mkOption {
|
||||
default = with pkgs; [asm-lsp];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
assembly packages
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
basePackages = with pkgs; [
|
||||
gitui
|
||||
meson
|
||||
ninja
|
||||
tree-sitter
|
||||
unzip
|
||||
pkg-config
|
||||
sqlite
|
||||
plantuml
|
||||
d-spy
|
||||
tmux
|
||||
tmate
|
||||
inputs.compose.packages.${system}.default
|
||||
];
|
||||
in
|
||||
lib.mkIf config.mods.coding.enable (
|
||||
lib.optionalAttrs (options ? home.packages) {
|
||||
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
||||
enable = true;
|
||||
inherit (config.mods.stylix) colorscheme;
|
||||
};
|
||||
programs.vscode = lib.mkIf config.mods.coding.vscodium.enable {
|
||||
enable = true;
|
||||
package = mkDashDefault pkgs.vscodium;
|
||||
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
|
||||
++ (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.rust.enable config.mods.coding.languages.rust.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages)
|
||||
++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.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.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.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,56 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./acpid.nix
|
||||
./anyrun.nix
|
||||
./basePackages.nix
|
||||
./bluetooth.nix
|
||||
./browser
|
||||
./clam.nix
|
||||
./coding.nix
|
||||
./containers.nix
|
||||
./drives.nix
|
||||
./fancontrol.nix
|
||||
./fastfetch.nix
|
||||
./fish.nix
|
||||
./flatpak.nix
|
||||
./gaming.nix
|
||||
./gdm.nix
|
||||
./git.nix
|
||||
./gnome.nix
|
||||
./gnomeServices.nix
|
||||
./gpu.nix
|
||||
./greetd.nix
|
||||
./homePackages.nix
|
||||
./hypr
|
||||
./ironbar.nix
|
||||
./kde.nix
|
||||
./kdeConnect.nix
|
||||
./keepassxc.nix
|
||||
./kitty.nix
|
||||
./media.nix
|
||||
./mime.nix
|
||||
./ncspot.nix
|
||||
./nextcloud.nix
|
||||
./niri.nix
|
||||
./onedrive.nix
|
||||
./oxi
|
||||
./piper.nix
|
||||
./plymouth.nix
|
||||
./printing.nix
|
||||
./scripts.nix
|
||||
./sddm.nix
|
||||
./sops.nix
|
||||
./starship.nix
|
||||
./streamcontroller.nix
|
||||
./stylix.nix
|
||||
./superfreq.nix
|
||||
./supersonic.nix
|
||||
./sway.nix
|
||||
./teams.nix
|
||||
./virtmanager.nix
|
||||
./wm.nix
|
||||
./xkb.nix
|
||||
./xone.nix
|
||||
./yazi
|
||||
];
|
||||
}
|
||||
|
|
@ -1,312 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods.drives = {
|
||||
variant = lib.mkOption {
|
||||
default = "manual";
|
||||
example = "disko";
|
||||
type = with lib.types; (enum [
|
||||
"manual"
|
||||
"disko"
|
||||
]);
|
||||
description = ''
|
||||
Disk configuration type, either "manual" for regular NixOS disk configuration,
|
||||
or "disko" for using disko to automatically format your drives.
|
||||
'';
|
||||
};
|
||||
useSwap = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Use swap in drive.
|
||||
'';
|
||||
};
|
||||
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 = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
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 {
|
||||
default = [
|
||||
];
|
||||
example = [
|
||||
{
|
||||
name = "drive2";
|
||||
drive = {
|
||||
device = "/dev/disk/by-label/DRIVE2";
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
"noatime"
|
||||
"nodiratime"
|
||||
"discard"
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
type = with lib.types; listOf (attrsOf anything);
|
||||
description = ''
|
||||
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) {
|
||||
boot.initrd.luks.devices = lib.mkIf (config.mods.drives.variant == "manual" && config.mods.drives.useEncryption) (
|
||||
builtins.listToAttrs (
|
||||
map (
|
||||
{
|
||||
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;
|
||||
value = drive;
|
||||
}
|
||||
)
|
||||
config.mods.drives.extraDrives
|
||||
)
|
||||
// (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/ROOT";
|
||||
fsType = config.mods.drives.homeAndRootFsTypes;
|
||||
options = [
|
||||
"noatime"
|
||||
"nodiratime"
|
||||
"discard"
|
||||
];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/BOOT";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"rw"
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-label/HOME";
|
||||
fsType = config.mods.drives.homeAndRootFsTypes;
|
||||
options = [
|
||||
"noatime"
|
||||
"nodiratime"
|
||||
"discard"
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: let
|
||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
||||
in {
|
||||
options.mods.fish = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables fish";
|
||||
};
|
||||
additionalConfig = lib.mkOption {
|
||||
default = '''';
|
||||
example = '''';
|
||||
type = lib.types.lines;
|
||||
description = "Additional fish config";
|
||||
};
|
||||
useDefaultConfig = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Use default fish config";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.fish.enable (
|
||||
lib.optionalAttrs (options ? programs.fish) {
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellInit =
|
||||
if config.mods.fish.useDefaultConfig
|
||||
then
|
||||
''
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Utility functions for zoxide.
|
||||
#
|
||||
|
||||
export NIX_PATH="$NIX_PATH:${config.conf.nixosConfigPath}"
|
||||
|
||||
set EDITOR "neovide --no-fork"
|
||||
|
||||
alias rebuild='nh os switch -- --accept-flake-config'
|
||||
alias update='nix flake update --flake $FLAKE --accept-flake-config'
|
||||
alias gcli='gh'
|
||||
abbr --add ls 'lsd'
|
||||
abbr --add :q 'exit'
|
||||
abbr --add gh 'git push origin'
|
||||
abbr --add gu 'git push upstream'
|
||||
abbr --add gl 'git pull origin'
|
||||
abbr --add gm 'git commit -m'
|
||||
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 s "kitty +kitten ssh"
|
||||
abbr --add zl 'z "" '
|
||||
abbr --add nv 'neovide'
|
||||
abbr --add cr 'cargo run'
|
||||
abbr --add grep 'rg'
|
||||
abbr --add cat 'bat'
|
||||
abbr --add find 'fd'
|
||||
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
|
||||
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
||||
function __zoxide_pwd
|
||||
builtin pwd -L
|
||||
end
|
||||
|
||||
# A copy of fish's internal cd function. This makes it possible to use
|
||||
# `alias cd=z` without causing an infinite loop.
|
||||
if ! builtin functions --query __zoxide_cd_internal
|
||||
if builtin functions --query cd
|
||||
builtin functions --copy cd __zoxide_cd_internal
|
||||
else
|
||||
alias __zoxide_cd_internal='builtin cd'
|
||||
end
|
||||
end
|
||||
|
||||
# cd + custom logic based on the value of _ZO_ECHO.
|
||||
function __zoxide_cd
|
||||
__zoxide_cd_internal $argv
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Hook configuration for zoxide.
|
||||
#
|
||||
|
||||
# Initialize hook to add new entries to the database.
|
||||
function __zoxide_hook --on-variable PWD
|
||||
test -z "$fish_private_mode"
|
||||
and command zoxide add -- (__zoxide_pwd)
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
||||
#
|
||||
|
||||
if test -z $__zoxide_z_prefix
|
||||
set __zoxide_z_prefix 'z!'
|
||||
end
|
||||
set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
|
||||
|
||||
# Jump to a directory using only keywords.
|
||||
function __zoxide_z
|
||||
set -l argc (count $argv)
|
||||
if test $argc -eq 0
|
||||
__zoxide_cd $HOME
|
||||
else if test "$argv" = -
|
||||
__zoxide_cd -
|
||||
else if test $argc -eq 1 -a -d $argv[1]
|
||||
__zoxide_cd $argv[1]
|
||||
else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result
|
||||
__zoxide_cd $result
|
||||
else
|
||||
set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
|
||||
and __zoxide_cd $result
|
||||
end
|
||||
end
|
||||
|
||||
# Completions.
|
||||
function __zoxide_z_complete
|
||||
set -l tokens (commandline --current-process --tokenize)
|
||||
set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
|
||||
|
||||
if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
|
||||
# If there are < 2 arguments, use `cd` completions.
|
||||
complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
|
||||
else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
|
||||
# If the last argument is empty and the one before doesn't start with
|
||||
# $__zoxide_z_prefix, use interactive selection.
|
||||
set -l query $tokens[2..-1]
|
||||
set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
|
||||
and echo $__zoxide_z_prefix$result
|
||||
commandline --function repaint
|
||||
end
|
||||
end
|
||||
complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
|
||||
|
||||
# Jump to a directory using interactive search.
|
||||
function __zoxide_zi
|
||||
set -l result (command zoxide query --interactive -- $argv)
|
||||
and __zoxide_cd $result
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Commands for zoxide. Disable these using --no-cmd.
|
||||
#
|
||||
|
||||
abbr --erase z &>/dev/null
|
||||
alias z=__zoxide_z
|
||||
|
||||
abbr --erase zi &>/dev/null
|
||||
alias zi=__zoxide_zi
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# To initialize zoxide, add this to your configuration (usually
|
||||
# ~/.config/fish/config.fish):
|
||||
#
|
||||
# zoxide init fish | source
|
||||
|
||||
direnv hook fish | source
|
||||
''
|
||||
+ config.mods.fish.additionalConfig
|
||||
else config.mods.fish.additionalConfig;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.flatpak = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the flatpak package manager";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.flatpak.enable (
|
||||
lib.optionalAttrs (options ? environment.systemPackages) {
|
||||
environment.systemPackages = [pkgs.flatpak];
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.gaming = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enabled gaming related features.";
|
||||
};
|
||||
tools = lib.mkOption {
|
||||
default = with pkgs; [
|
||||
protonplus
|
||||
gamescope
|
||||
gamemode
|
||||
steam
|
||||
# TODO broken
|
||||
# lutris
|
||||
wineWowPackages.stable
|
||||
adwsteamgtk
|
||||
heroic
|
||||
mangohud
|
||||
nexusmods-app
|
||||
steamtinkerlaunch
|
||||
winetricks
|
||||
];
|
||||
example = [];
|
||||
type = with lib.types; listOf package;
|
||||
description = "Install gaming related packages";
|
||||
};
|
||||
kernel = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
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 {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Whether to use steam";
|
||||
};
|
||||
gamemode = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Whether to use gamemode";
|
||||
};
|
||||
pinCores = 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;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Whether to use GPU performance setting. NOTE: this is at your own risk!";
|
||||
};
|
||||
gpuDevice = lib.mkOption {
|
||||
default = 0;
|
||||
example = 1;
|
||||
type = lib.types.int;
|
||||
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 (
|
||||
lib.optionalAttrs (options ? environment.systemPackages) {
|
||||
environment.systemPackages = config.mods.gaming.tools;
|
||||
boot.kernelPackages = lib.mkForce pkgs.cachyosKernels.linuxPackages-cachyos-latest;
|
||||
services.scx = lib.mkIf (config.mods.gaming.scheduler != null) {
|
||||
enable = true;
|
||||
inherit (config.mods.gaming) scheduler;
|
||||
};
|
||||
|
||||
programs = {
|
||||
steam.enable = mkDashDefault config.mods.gaming.steam;
|
||||
gamemode.enable = true;
|
||||
gamemode = {
|
||||
settings = {
|
||||
general = {
|
||||
desiredgov = mkDashDefault "performance";
|
||||
};
|
||||
cpu = {
|
||||
pin_cores = mkDashDefault config.mods.gaming.pinCores;
|
||||
park_cores = mkDashDefault config.mods.gaming.parkCores;
|
||||
};
|
||||
gpu = lib.mkIf config.mods.gaming.gpuOptimization {
|
||||
apply_gpu_optimisations = mkDashDefault "accept-responsibility";
|
||||
gpu_device = mkDashDefault config.mods.gaming.gpuDevice;
|
||||
amd_performance_level = mkDashDefault "high";
|
||||
nv_powermizer_mode = mkDashDefault 1;
|
||||
};
|
||||
custom = {
|
||||
start = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations activated'";
|
||||
end = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations deactivated'";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
options,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.mods.gdm = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the gdm displayManager";
|
||||
};
|
||||
extraOptions = lib.mkOption {
|
||||
default = {};
|
||||
example = {};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "Extra options to be applied to the gnome config";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.gdm.enable (
|
||||
lib.optionalAttrs (options ? services.xserver.displayManager.gdm) (
|
||||
{
|
||||
services.xserver.enable = true;
|
||||
services.xserver.displayManager.gdm.enable = true;
|
||||
}
|
||||
// {
|
||||
services.xserver.displayManager.gdm = config.mods.gdm.extraOptions;
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods.git = {
|
||||
username = lib.mkOption {
|
||||
default = "";
|
||||
example = "globi";
|
||||
type = lib.types.str;
|
||||
description = "Git user name";
|
||||
};
|
||||
email = lib.mkOption {
|
||||
default = "";
|
||||
example = "globi@globus.glob";
|
||||
type = lib.types.str;
|
||||
description = "Git email";
|
||||
};
|
||||
additionalConfig = lib.mkOption {
|
||||
default = {
|
||||
merge = {
|
||||
tool = "nvimdiff";
|
||||
};
|
||||
diff = {
|
||||
tool = "nvimdiff";
|
||||
};
|
||||
pull.rebase = true;
|
||||
};
|
||||
example = {
|
||||
pull.rebase = false;
|
||||
};
|
||||
type = with lib.types; attrsOf anything;
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
options,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.gnome = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the Gnome desktop environment";
|
||||
};
|
||||
useDefaultOptions = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
|
||||
};
|
||||
extraOptions = lib.mkOption {
|
||||
default = {};
|
||||
example = {};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "Extra options to be applied to the gnome config";
|
||||
};
|
||||
extraDconf = lib.mkOption {
|
||||
default = {};
|
||||
example = {};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "Extra options to be applied to the dconf config";
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
defaultExtensions = with pkgs.gnomeExtensions; [
|
||||
blur-my-shell
|
||||
dash-to-dock
|
||||
tray-icons-reloaded
|
||||
];
|
||||
in
|
||||
lib.mkIf config.mods.gnome.enable (
|
||||
lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) (
|
||||
{
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.gnome.enable = true;
|
||||
};
|
||||
}
|
||||
// lib.mkIf config.mods.gnome.useDefaultOptions {environment.systemPackages = defaultExtensions;}
|
||||
// {
|
||||
services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions;
|
||||
}
|
||||
)
|
||||
// lib.optionalAttrs (options ? dconf) (
|
||||
lib.mkIf config.mods.gnome.useDefaultOptions {
|
||||
dconf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"org/gnome/shell" = {
|
||||
disable-user-extensions = false;
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
// {
|
||||
dconf = config.mods.gnome.extraDconf;
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.gpu = {
|
||||
nvidia.enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables nvidia support.
|
||||
'';
|
||||
};
|
||||
amdgpu.enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables amdgpu support.
|
||||
'';
|
||||
};
|
||||
intelgpu.enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables intel support.
|
||||
'';
|
||||
};
|
||||
vapi = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables vapi.
|
||||
'';
|
||||
};
|
||||
rocm.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
example = true;
|
||||
description = ''
|
||||
Enables rocm support.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 =
|
||||
if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable)
|
||||
then {
|
||||
RUSTICL_ENABLE = mkDashDefault "radeonsi";
|
||||
}
|
||||
else {};
|
||||
|
||||
hardware = {
|
||||
nvidia = lib.mkIf config.mods.gpu.nvidia.enable {
|
||||
modesetting.enable = mkDashDefault true;
|
||||
open = mkDashDefault true;
|
||||
nvidiaSettings = mkDashDefault true;
|
||||
package = mkDashDefault config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
};
|
||||
graphics = let
|
||||
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.enable && lib.mkIf config.mods.gpu.vapi.enable
|
||||
)
|
||||
pkgs.intel-media-driver)
|
||||
(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.libva-vdpau-driver)
|
||||
(lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa)
|
||||
];
|
||||
rocmPackages = [
|
||||
pkgs.rocmPackages.clr.icd
|
||||
pkgs.mesa
|
||||
pkgs.mesa.opencl
|
||||
pkgs.vulkan-loader
|
||||
pkgs.vulkan-validation-layers
|
||||
pkgs.vulkan-tools
|
||||
pkgs.clinfo
|
||||
];
|
||||
in {
|
||||
enable = true;
|
||||
enable32Bit = mkDashDefault true;
|
||||
extraPackages =
|
||||
amdPackages
|
||||
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages);
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
{
|
||||
mkDashDefault,
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
options,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
options.mods = {
|
||||
greetd = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enables the greetd login manager.
|
||||
'';
|
||||
};
|
||||
monitor = lib.mkOption {
|
||||
default =
|
||||
if config.mods.wm.monitors != []
|
||||
then (builtins.elemAt config.mods.wm.monitors 0).name
|
||||
else "";
|
||||
example = "eDP-1";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
main monitor for the login screen.
|
||||
By default the main monitor is used.
|
||||
'';
|
||||
};
|
||||
scale = lib.mkOption {
|
||||
default =
|
||||
if config.mods.wm.monitors != []
|
||||
then builtins.toString (builtins.elemAt config.mods.wm.monitors 0).scale
|
||||
else "";
|
||||
example = "1.5";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
Scale used by the monitor in the login screen.
|
||||
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 {
|
||||
default =
|
||||
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";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
Resolution/refreshrate used by the monitor in the login screen.
|
||||
'';
|
||||
};
|
||||
environments = lib.mkOption {
|
||||
default = [
|
||||
(lib.mkIf config.mods.hypr.hyprland.enable inputs.hyprland.packages.${config.conf.system}.hyprland)
|
||||
(lib.mkIf config.mods.niri.enable pkgs.niri)
|
||||
];
|
||||
# no idea if these are written correctly
|
||||
example = [
|
||||
pkgs.niri
|
||||
pkgs.river-classic
|
||||
pkgs.swayfx
|
||||
];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
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
|
||||
inherit (config.conf) username;
|
||||
in
|
||||
lib.mkIf config.mods.greetd.enable (
|
||||
lib.optionalAttrs (options ? environment) {
|
||||
# greetd display manager
|
||||
programs.hyprland.enable = mkDashDefault true;
|
||||
services = {
|
||||
displayManager.sessionPackages = config.mods.greetd.environments;
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
terminal.vt = mkDashDefault 1;
|
||||
default_session = {
|
||||
command = mkDashDefault config.mods.greetd.greeterCommand;
|
||||
user = mkDashDefault username;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# 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 = ''
|
||||
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
||||
monitor=,disable
|
||||
|
||||
input {
|
||||
kb_layout = ${config.mods.xkb.layout}
|
||||
kb_variant = ${config.mods.xkb.variant}
|
||||
force_no_accel = true
|
||||
}
|
||||
|
||||
misc {
|
||||
disable_splash_rendering = false
|
||||
disable_hyprland_logo = true
|
||||
disable_xdg_env_checks = true
|
||||
disable_scale_notification = true
|
||||
}
|
||||
|
||||
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_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
|
||||
'';
|
||||
|
||||
# unlock GPG keyring on login
|
||||
security.pam = {
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./hyprlock.nix
|
||||
./hyprpaper.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
options,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.mods.kde = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the KDE desktop environment";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.kde.enable (
|
||||
lib.optionalAttrs (options ? services.desktopManager.plasma6) {
|
||||
# apparently kde integration is bad -> kdeconfig is too much even for nix, can't blame them :)
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods = {
|
||||
kdeConnect.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
example = true;
|
||||
description = ''
|
||||
Enables kde_connect.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.kdeConnect.enable (
|
||||
lib.optionalAttrs (options ? networking.firewall) {
|
||||
networking.firewall = {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
# KDE Connect
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
# KDE Connect
|
||||
];
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (options ? home.packages) {
|
||||
home.packages = with pkgs; [kdePackages.kdeconnect-kde];
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.keepassxc = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the piper program and its daemon";
|
||||
};
|
||||
useConfig = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
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!";
|
||||
};
|
||||
config = lib.mkOption {
|
||||
default = ''
|
||||
[General]
|
||||
ConfigVersion=2
|
||||
|
||||
[Browser]
|
||||
Enabled=true
|
||||
|
||||
[GUI]
|
||||
ApplicationTheme=classic
|
||||
HidePasswords=true
|
||||
MinimizeOnClose=true
|
||||
MinimizeToTray=true
|
||||
ShowTrayIcon=true
|
||||
TrayIconAppearance=monochrome-light
|
||||
|
||||
[PasswordGenerator]
|
||||
Length=30
|
||||
|
||||
[Security]
|
||||
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 {
|
||||
text = config.mods.keepassxc.cacheConfig;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
base16 = pkgs.callPackage inputs.base16.lib {};
|
||||
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
|
||||
hexTable = {
|
||||
"0" = "1";
|
||||
"1" = "0";
|
||||
"2" = "1";
|
||||
"3" = "2";
|
||||
"4" = "3";
|
||||
"5" = "4";
|
||||
"6" = "5";
|
||||
"7" = "6";
|
||||
"8" = "7";
|
||||
"9" = "8";
|
||||
"a" = "9";
|
||||
"b" = "a";
|
||||
"c" = "b";
|
||||
"d" = "c";
|
||||
"e" = "d";
|
||||
"f" = "e";
|
||||
};
|
||||
# don't ask :)
|
||||
base =
|
||||
"#"
|
||||
+ lib.strings.concatStrings (
|
||||
(lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00))
|
||||
++ [hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}"]
|
||||
);
|
||||
in {
|
||||
options.mods.kitty = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables kitty";
|
||||
};
|
||||
useDefaultConfig = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enable default config for kitty";
|
||||
};
|
||||
additionalConfig = lib.mkOption {
|
||||
default = {};
|
||||
example = {
|
||||
# for the insane people out there :P
|
||||
enable_audio_bell = "yes";
|
||||
};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "Additional kitty configuration. Will be the only configuration if useDefaultConfig is disabled.";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.kitty.enable (
|
||||
lib.optionalAttrs (options ? home.packages) {
|
||||
stylix.targets.kitty = {
|
||||
enable = false;
|
||||
};
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
settings =
|
||||
if config.mods.kitty.useDefaultConfig
|
||||
then
|
||||
{
|
||||
enable_audio_bell = "no";
|
||||
window_alert_on_bell = "no";
|
||||
cursor_blink_interval = "0";
|
||||
window_padding_width = "1";
|
||||
shell_integration = "yes";
|
||||
sync_with_monitor = "no";
|
||||
background_opacity = "0.8";
|
||||
|
||||
font_family = "${config.mods.stylix.fonts.monospace.name}";
|
||||
bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold";
|
||||
italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic";
|
||||
bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic";
|
||||
|
||||
background = base;
|
||||
foreground = "#" + scheme.base05;
|
||||
selection_foreground = "#" + scheme.base05;
|
||||
selection_background = base;
|
||||
url_color = "#" + scheme.base04;
|
||||
cursor = "#" + scheme.base05;
|
||||
active_border_color = "#" + scheme.base03;
|
||||
inactive_border_color = "#" + scheme.base01;
|
||||
active_tab_background = base;
|
||||
active_tab_foreground = "#" + scheme.base05;
|
||||
inactive_tab_background = "#" + scheme.base01;
|
||||
inactive_tab_foreground = "#" + scheme.base04;
|
||||
tab_bar_background = "#" + scheme.base01;
|
||||
|
||||
mark1_foreground = "#" + scheme.base00;
|
||||
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;
|
||||
color2 = "#" + scheme.base0B;
|
||||
color3 = "#" + scheme.base0A;
|
||||
color4 = "#" + scheme.base0D;
|
||||
color5 = "#" + scheme.base06;
|
||||
color6 = "#" + scheme.base0C;
|
||||
color7 = "#" + scheme.base07;
|
||||
|
||||
color8 = "#" + scheme.base04;
|
||||
color9 = "#" + scheme.base08;
|
||||
color10 = "#" + scheme.base0B;
|
||||
color11 = "#" + scheme.base0A;
|
||||
color12 = "#" + scheme.base0D;
|
||||
color13 = "#" + scheme.base06;
|
||||
color14 = "#" + scheme.base0C;
|
||||
color15 = "#" + scheme.base0B;
|
||||
shell = lib.mkIf config.mods.fish.enable "fish";
|
||||
}
|
||||
// config.mods.kitty.additionalConfig
|
||||
else config.mods.kitty.additionalConfig;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
options,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.media = {
|
||||
useBasePackages = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Default media packages (If disabled, only the additional packages will be installed)";
|
||||
};
|
||||
additionalPackages = lib.mkOption {
|
||||
default = [];
|
||||
example = [pkgs.flatpak];
|
||||
type = with lib.types; listOf package;
|
||||
description = ''
|
||||
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 {
|
||||
default = {};
|
||||
example = {};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = ''
|
||||
special services configuration to be added which require an services.something notation.
|
||||
'';
|
||||
};
|
||||
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
|
||||
pipewire
|
||||
wireplumber
|
||||
# audio control
|
||||
playerctl
|
||||
# images
|
||||
eog
|
||||
# videos
|
||||
mpv
|
||||
# pdf
|
||||
zathura
|
||||
evince
|
||||
libreoffice-fresh
|
||||
onlyoffice-desktopeditors
|
||||
pdftk
|
||||
pdfpc
|
||||
polylux2pdfpc
|
||||
# spotify
|
||||
# video editing
|
||||
kdePackages.kdenlive
|
||||
# image creation
|
||||
inkscape
|
||||
gimp
|
||||
krita
|
||||
yt-dlp
|
||||
]
|
||||
++ config.mods.media.additionalPackages
|
||||
else config.mods.media.additionalPackages;
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.ncspot = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables ncspot with a config";
|
||||
};
|
||||
config = lib.mkOption {
|
||||
default = {
|
||||
notify = true;
|
||||
shuffle = true;
|
||||
cover_max_scale = 2;
|
||||
initial_screen = "library";
|
||||
library_tabs = ["playlists"];
|
||||
theme = {
|
||||
background = "#1a1b26";
|
||||
primary = "#9aa5ce";
|
||||
secondary = "#414868";
|
||||
title = "#9ece6a";
|
||||
playing = "#7aa2f7";
|
||||
playing_selected = "#bb9af7";
|
||||
playing_bg = "#24283b";
|
||||
highlight = "#c0caf5";
|
||||
highlight_bg = "#24283b";
|
||||
error = "#414868";
|
||||
error_bg = "#f7768e";
|
||||
statusbar = "#ff9e64";
|
||||
statusbar_progress = "#7aa2f7";
|
||||
statusbar_bg = "#1a1b26";
|
||||
cmdline = "#c0caf5";
|
||||
cmdline_bg = "#24283b";
|
||||
search_match = "#f7768e";
|
||||
};
|
||||
keybindings = {
|
||||
"j" = "move left 1";
|
||||
"k" = "move down 1";
|
||||
"l" = "move up 1";
|
||||
";" = "move right 1";
|
||||
};
|
||||
notification_format = {
|
||||
title = "%artists";
|
||||
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,38 +0,0 @@
|
|||
{lib, ...}: {
|
||||
options.mods = {
|
||||
nextcloud = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enable nextcloud";
|
||||
};
|
||||
username = lib.mkOption {
|
||||
default = "";
|
||||
example = "globi";
|
||||
type = lib.types.str;
|
||||
description = "Your username";
|
||||
};
|
||||
url = lib.mkOption {
|
||||
default = "";
|
||||
example = "cloud.globi.org";
|
||||
type = lib.types.str;
|
||||
description = "Your url";
|
||||
};
|
||||
synclist = lib.mkOption {
|
||||
default = [];
|
||||
example = [
|
||||
{
|
||||
name = "sync globi folder";
|
||||
remote = "globi";
|
||||
local = "/home/globi";
|
||||
}
|
||||
];
|
||||
description = ''
|
||||
A list of folders to synchronize.
|
||||
This has to be an attribute list with the name, remote and local field (all strings).
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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];
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./oxidash.nix
|
||||
./oxinoti.nix
|
||||
./oxipaste.nix
|
||||
./oxirun.nix
|
||||
./oxishut.nix
|
||||
];
|
||||
options.mods.oxi = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables oxi programs";
|
||||
};
|
||||
ReSet = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables and configures ReSet";
|
||||
};
|
||||
};
|
||||
hyprdock = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables hyprdock";
|
||||
};
|
||||
settings = lib.mkOption {
|
||||
default = {};
|
||||
example = {};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "settings for hyprdock";
|
||||
};
|
||||
};
|
||||
oxicalc = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables hyprdock";
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.oxi.enable (
|
||||
lib.optionalAttrs (options ? home.packages) {
|
||||
programs = {
|
||||
hyprdock = {
|
||||
inherit (config.mods.oxi.hyprdock) enable;
|
||||
inherit (config.mods.oxi.hyprdock) settings;
|
||||
};
|
||||
oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true;
|
||||
ReSet = lib.mkIf config.mods.oxi.ReSet.enable {
|
||||
enable = true;
|
||||
config = {
|
||||
plugins = [
|
||||
inputs.reset-plugins.packages."x86_64-linux".monitor
|
||||
inputs.reset-plugins.packages."x86_64-linux".keyboard
|
||||
];
|
||||
plugin_config = {
|
||||
Keyboard = {
|
||||
path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (options ? services.logind && options ? services.logind.settings) {
|
||||
services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
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 = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables and configures oxidash";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) (
|
||||
lib.optionalAttrs (options ? xdg.configFile) {
|
||||
programs.oxidash.enable = true;
|
||||
xdg.configFile."oxidash/style.css" = {
|
||||
text = ''
|
||||
@define-color bg #${scheme.base00};
|
||||
@define-color primary #${scheme.base0D};
|
||||
|
||||
#MainWindow {
|
||||
border-radius: 10px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#MainBox {
|
||||
border-radius: 10px;
|
||||
border: 1px solid @primary;
|
||||
background-color: @bg;
|
||||
}
|
||||
|
||||
#MainButtonBox {
|
||||
padding: 10px;
|
||||
margin: 5px 0px 5px 0px;
|
||||
border-radius: 5px;
|
||||
border: solid 1px @primary;
|
||||
}
|
||||
|
||||
#DoNotDisturbButton {}
|
||||
|
||||
#ExitButton {}
|
||||
|
||||
#ClearNotificationsButton {}
|
||||
|
||||
#NotificationsWindow {}
|
||||
|
||||
.debugimage {
|
||||
border: solid 3px @primary;
|
||||
}
|
||||
|
||||
.Notification {
|
||||
padding: 10px;
|
||||
margin: 5px 0px 5px 0px;
|
||||
border: solid 1px @primary;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.CloseNotificationButton {
|
||||
margin: 0px 5px 0px 10px;
|
||||
}
|
||||
|
||||
.PictureButtonBox {}
|
||||
|
||||
.BaseBox {}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
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 = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables and configures oxinoti";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) (
|
||||
lib.optionalAttrs (options ? xdg.configFile) {
|
||||
programs.oxinoti.enable = true;
|
||||
xdg.configFile."oxinoti/style.css" = {
|
||||
text =
|
||||
# css
|
||||
''
|
||||
@import url("/home/dashie/.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 {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
/* opacity: 0; */
|
||||
}
|
||||
|
||||
.MainBox {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
/* opacity: 0; */
|
||||
}
|
||||
|
||||
.NotificationBox {
|
||||
background-color: @bg;
|
||||
border-radius: 5px;
|
||||
border: solid 1px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.NotificationBox button {
|
||||
background-color: @bg;
|
||||
}
|
||||
|
||||
.NotificationBox button:hover {
|
||||
background-color: @bghover;
|
||||
}
|
||||
|
||||
.NotificationLow {
|
||||
border-color: @green;
|
||||
}
|
||||
|
||||
.NotificationNormal {
|
||||
border-color: @primary;
|
||||
}
|
||||
|
||||
.NotificationUrgent {
|
||||
border-color: @red;
|
||||
}
|
||||
|
||||
.miscbox {
|
||||
margin: 0px 10px 0px 0px;
|
||||
}
|
||||
|
||||
.bodybox {}
|
||||
|
||||
.imagebox {
|
||||
margin: 0px 0px 0px 10px;
|
||||
}
|
||||
|
||||
.appname {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.image {}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
'';
|
||||
};
|
||||
xdg.configFile."oxinoti/oxinoti.toml" = {
|
||||
text = ''
|
||||
timeout = 3
|
||||
dnd_override = 2
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods.oxi.oxipaste = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables and configures oxipaste";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) (
|
||||
lib.optionalAttrs (options ? xdg.configFile) {
|
||||
programs.oxipaste.enable = true;
|
||||
xdg.configFile."oxipaste/style.css" = {
|
||||
text = ''
|
||||
.main-window {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid #2AC3DE;
|
||||
}
|
||||
|
||||
.item-window {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid #C0CAF5;
|
||||
}
|
||||
|
||||
.item-button {
|
||||
background-color: #1A1B26;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #6D728D;
|
||||
}
|
||||
|
||||
.delete-button {
|
||||
margin: 5px 25px 5px 5px;
|
||||
}
|
||||
|
||||
.item-box {
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
...
|
||||
}: {
|
||||
options.mods.oxi.oxishut = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables and configures oxishut";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) (
|
||||
lib.optionalAttrs (options ? xdg.configFile) {
|
||||
programs.oxishut.enable = true;
|
||||
xdg.configFile."oxishut/style.css" = {
|
||||
text = ''
|
||||
#mainwindow {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.mainbox {
|
||||
border-radius: 5px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.button {
|
||||
margin: 5px;
|
||||
background-color: #2b2c3b;
|
||||
-gtk-icon-size: 5rem;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.piper = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the piper program and its daemon";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.piper.enable (
|
||||
lib.optionalAttrs (options ? services.ratbagd) {services.ratbagd.enable = true;}
|
||||
// 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;}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.printing = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the piper program and its daemon";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.printing.enable (
|
||||
lib.optionalAttrs (options ? services.printing) {
|
||||
# Enable CUPS to print documents.
|
||||
environment.systemPackages = with pkgs; [
|
||||
simple-scan
|
||||
];
|
||||
hardware.sane.enable = true;
|
||||
services = {
|
||||
printing = {
|
||||
enable = true;
|
||||
browsing = true;
|
||||
drivers = [pkgs.hplip];
|
||||
startWhenNeeded = true; # optional
|
||||
};
|
||||
avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.mods.scripts = {
|
||||
changeBrightness = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the change-brightness script";
|
||||
};
|
||||
audioControl = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the audioControl script";
|
||||
};
|
||||
scripts = lib.mkOption {
|
||||
default = [];
|
||||
example = [];
|
||||
description = "More scripts to be passed. (check existing ones for types and examples)";
|
||||
};
|
||||
};
|
||||
config = lib.optionalAttrs (options ? home.packages) {
|
||||
home.packages =
|
||||
[
|
||||
(lib.mkIf config.mods.scripts.changeBrightness (
|
||||
pkgs.writeShellScriptBin "changeBrightness" ''
|
||||
brightnessctl set "$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}%"
|
||||
''
|
||||
))
|
||||
(lib.mkIf config.mods.scripts.audioControl (
|
||||
pkgs.writeShellScriptBin "audioControl" ''
|
||||
ncspot() {
|
||||
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')
|
||||
pactl set-sink-input-volume "$CHANGE" "$1"
|
||||
VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
|
||||
notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%"
|
||||
}
|
||||
|
||||
firefox() {
|
||||
STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n')
|
||||
# NUMS=',' read -r -a array <<< "$STRING"
|
||||
readarray -td, NUMS <<<"$STRING"
|
||||
declare -p NUMS
|
||||
for index in "''${!NUMS[@]}"; do #"''${!array[@]}"
|
||||
NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n')
|
||||
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
|
||||
pactl set-sink-input-volume "$CHANGE" "$1"
|
||||
done
|
||||
VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
|
||||
notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%"
|
||||
}
|
||||
|
||||
internal() {
|
||||
SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }')
|
||||
if [ "$SPEAKER" != "" ]; then
|
||||
pactl set-default-sink "$SPEAKER"
|
||||
pactl set-sink-mute "$SPEAKER" false
|
||||
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
|
||||
notify-send "changed audio to "$DEVICE" "
|
||||
else
|
||||
notify-send "failed, not available!"
|
||||
fi
|
||||
}
|
||||
|
||||
set_volume_sink() {
|
||||
pactl set-sink-volume @DEFAULT_SINK@ "$1"
|
||||
CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %')
|
||||
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%"
|
||||
}
|
||||
|
||||
set_volume_source() {
|
||||
pactl set-source-volume @DEFAULT_SOURCE@ "$1"
|
||||
CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %')
|
||||
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%"
|
||||
}
|
||||
|
||||
bluetooth() {
|
||||
SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }')
|
||||
if [ "$SPEAKER" != "" ]; then
|
||||
pactl set-default-sink "$SPEAKER"
|
||||
pactl set-sink-mute "$SPEAKER" false
|
||||
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
|
||||
notify-send "changed audio to "$DEVICE" "
|
||||
else
|
||||
notify-send "failed, not available!"
|
||||
fi
|
||||
}
|
||||
|
||||
mute() {
|
||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
MUTE=$(pactl get-sink-mute @DEFAULT_SINK@)
|
||||
notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE"
|
||||
}
|
||||
|
||||
if [ "$1" == "internal" ]; then
|
||||
internal
|
||||
elif [ "$1" == "bluetooth" ]; then
|
||||
bluetooth
|
||||
elif [ "$1" == "firefox" ]; then
|
||||
firefox "$2"
|
||||
elif [ "$1" == "ncspot" ]; then
|
||||
ncspot "$2"
|
||||
elif [ "$1" == "mute" ]; then
|
||||
mute
|
||||
elif [ "$1" == "sink" ]; then
|
||||
set_volume_sink "$2"
|
||||
elif [ "$1" == "source" ]; then
|
||||
set_volume_source "$2"
|
||||
fi
|
||||
''
|
||||
))
|
||||
]
|
||||
++ config.mods.scripts.scripts;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
options,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.mods.sddm = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enables the sddm displayManager";
|
||||
};
|
||||
useDefaultOptions = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
|
||||
};
|
||||
extraOptions = lib.mkOption {
|
||||
default = {};
|
||||
example = {
|
||||
wayland.enable = false;
|
||||
};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "Extra options to be applied to the sddm config";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.mods.sddm.enable (
|
||||
lib.optionalAttrs (options ? services.displayManager.sddm) (
|
||||
{
|
||||
services.displayManager.sddm.enable = true;
|
||||
}
|
||||
// lib.mkIf config.mods.sddm.useDefaultOptions {
|
||||
services.displayManager.sddm.wayland.enable = true;
|
||||
}
|
||||
// {
|
||||
services.displayManager.sddm = config.mods.sddm.extraOptions;
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
options,
|
||||
root,
|
||||
...
|
||||
}: {
|
||||
options.mods.sops = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enable sops secrets";
|
||||
};
|
||||
secrets = lib.mkOption {
|
||||
default = {};
|
||||
example = {
|
||||
hub = {};
|
||||
lab = {};
|
||||
${config.conf.username} = {};
|
||||
nextcloud = {};
|
||||
access = {};
|
||||
};
|
||||
type = with lib.types; attrsOf anything;
|
||||
description = "secrets for sops";
|
||||
};
|
||||
sopsPath = lib.mkOption {
|
||||
default = root + /secrets/secrets.yaml;
|
||||
example = "/your/path";
|
||||
type = with lib.types;
|
||||
oneOf [
|
||||
str
|
||||
path
|
||||
];
|
||||
description = "sops secrets path";
|
||||
};
|
||||
validateSopsFile = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
type = lib.types.bool;
|
||||
description = "Whether to validate the sops file -> set this to false when using full paths";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.mods.sops.enable (
|
||||
lib.optionalAttrs (options ? home.packages) {
|
||||
home.packages = with pkgs; [sops];
|
||||
sops = {
|
||||
gnupg = {
|
||||
home = "~/.gnupg";
|
||||
sshKeyPaths = [];
|
||||
};
|
||||
defaultSopsFile = config.mods.sops.sopsPath;
|
||||
validateSopsFiles = config.mods.sops.validateSopsFile;
|
||||
secrets = config.mods.sops.secrets;
|
||||
};
|
||||
|
||||
systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
|
||||
}
|
||||
);
|
||||
}
|
||||