Merge branch 'master' into treewide-init-maintainers
This commit is contained in:
commit
6d16807fc5
185 changed files with 5077 additions and 3623 deletions
113
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
113
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
description: Report a bug
|
||||
labels: [bug]
|
||||
name: Bug
|
||||
title: "<SCOPE>: <SUMMARY>"
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
|
||||
attributes:
|
||||
label: I assert that this issue is relevant for Stylix
|
||||
|
||||
description: >-
|
||||
If you need help or are unsure whether this is a Stylix bug, please
|
||||
consider reading the [documentation](https://stylix.danth.me) or asking
|
||||
for help in a [GitHub
|
||||
Discussion](https://github.com/danth/stylix/discussions) or the [Stylix
|
||||
Matrix Room](https://matrix.to/#/#stylix:danth.me) before opening an
|
||||
issue.
|
||||
|
||||
options:
|
||||
- label: >-
|
||||
I assert that this is a bug and not a user error or support
|
||||
request.
|
||||
|
||||
required: true
|
||||
|
||||
- label: >-
|
||||
I assert that this is not a duplicate of an [existing
|
||||
issue](https://github.com/danth/stylix/issues).
|
||||
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
description: >-
|
||||
Describe the issue in detail. Consider including a minimal reproducible
|
||||
example, logs, or screenshots.
|
||||
|
||||
label: Description
|
||||
|
||||
placeholder: Type your description here…
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
description: >-
|
||||
Copy-paste the `flake.lock` file. If flakes are not used, remove the
|
||||
prefilled content and provide the locked input versions.
|
||||
|
||||
label: flake.lock
|
||||
|
||||
value: |-
|
||||
<details>
|
||||
<summary><code>flake.lock</code></summary>
|
||||
<!-- Copy-paste the flake.lock file inside the following code block -->
|
||||
|
||||
```json
|
||||
|
||||
```
|
||||
</details>
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
|
||||
attributes:
|
||||
description: How is Stylix installed?
|
||||
label: Installation Method
|
||||
|
||||
options:
|
||||
- NixOS
|
||||
- Home Manager
|
||||
- nix-darwin
|
||||
- Nix-on-Droid
|
||||
- Other
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
description: "`nix-info --markdown` output."
|
||||
label: System Information
|
||||
|
||||
placeholder: |-
|
||||
- system:
|
||||
- host os:
|
||||
- multi-user?:
|
||||
- sandbox:
|
||||
- version:
|
||||
- nixpkgs:
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Notify maintainers
|
||||
|
||||
description: >-
|
||||
If this bug is module-specific, consider pinging its maintainers. Each
|
||||
module lists its maintainers in the
|
||||
[documentation](https://stylix.danth.me).
|
||||
|
||||
placeholder: "@danth, @trueNAHO"
|
||||
43
.github/ISSUE_TEMPLATE/change_option.yml
vendored
Normal file
43
.github/ISSUE_TEMPLATE/change_option.yml
vendored
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
description: Request a change to an existing option
|
||||
labels: [change-option]
|
||||
name: Change option
|
||||
title: "<SCOPE>: <DESCRIPTION>"
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
|
||||
attributes:
|
||||
label: I assert that this feature request is relevant for Stylix
|
||||
|
||||
options:
|
||||
- label: >-
|
||||
I assert that this is not a duplicate of an [existing feature
|
||||
request](https://github.com/danth/stylix/issues).
|
||||
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Description
|
||||
|
||||
description: >-
|
||||
Describe the change and its potential breaking changes, and demonstrate
|
||||
the use case it improves.
|
||||
|
||||
placeholder: Type your description here…
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Notify maintainers
|
||||
|
||||
description: >-
|
||||
Consider pinging the module maintainers. Each module lists its
|
||||
maintainers in the [documentation](https://stylix.danth.me).
|
||||
|
||||
placeholder: "@danth, @trueNAHO"
|
||||
43
.github/ISSUE_TEMPLATE/change_target.yml
vendored
Normal file
43
.github/ISSUE_TEMPLATE/change_target.yml
vendored
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
description: Request a change to an existing target
|
||||
labels: [change-target]
|
||||
name: Change target
|
||||
title: "<TARGET>: <DESCRIPTION>"
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
|
||||
attributes:
|
||||
label: I assert that this feature request is relevant for Stylix
|
||||
|
||||
options:
|
||||
- label: >-
|
||||
I assert that this is not a duplicate of an [existing feature
|
||||
request](https://github.com/danth/stylix/issues).
|
||||
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Description
|
||||
|
||||
description: >-
|
||||
Describe the change. Consider including links to potentially useful
|
||||
NixOS, Home Manager, nix-darwin, or Nix-on-Droid options.
|
||||
|
||||
placeholder: Type your description here…
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Notify maintainers
|
||||
|
||||
description: >-
|
||||
Consider pinging the module maintainers. Each module lists its
|
||||
maintainers in the [documentation](https://stylix.danth.me).
|
||||
|
||||
placeholder: "@danth, @trueNAHO"
|
||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
blank_issues_enabled: true
|
||||
|
||||
contact_links:
|
||||
- name: Ask on GitHub Discussions
|
||||
url: https://github.com/danth/stylix/discussions/new/choose
|
||||
about: For questions or informal discussions
|
||||
|
||||
- name: Ask on Matrix
|
||||
url: https://matrix.to/#/#stylix:danth.me
|
||||
about: For questions or informal discussions
|
||||
43
.github/ISSUE_TEMPLATE/new_option.yml
vendored
Normal file
43
.github/ISSUE_TEMPLATE/new_option.yml
vendored
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
description: Request the addition of a new option
|
||||
labels: [new-option]
|
||||
name: New option
|
||||
title: "<SCOPE>: add <OPTION> option"
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
|
||||
attributes:
|
||||
label: I assert that this feature request is relevant for Stylix
|
||||
|
||||
options:
|
||||
- label: >-
|
||||
I assert that this is not a duplicate of an [existing feature
|
||||
request](https://github.com/danth/stylix/issues).
|
||||
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Description
|
||||
|
||||
description: >-
|
||||
Describe the option and explain its use case. Consider including
|
||||
pseudocode demonstrating its integration with the existing architecture.
|
||||
|
||||
placeholder: Type your description here…
|
||||
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Notify maintainers
|
||||
|
||||
description: >-
|
||||
Consider pinging the module maintainers. Each module lists its
|
||||
maintainers in the [documentation](https://stylix.danth.me).
|
||||
|
||||
placeholder: "@danth, @trueNAHO"
|
||||
32
.github/ISSUE_TEMPLATE/new_target.yml
vendored
Normal file
32
.github/ISSUE_TEMPLATE/new_target.yml
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
description: Request the addition of a new target
|
||||
labels: [new-target]
|
||||
name: New target
|
||||
title: "<TARGET>: add target"
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
|
||||
attributes:
|
||||
label: I assert that this feature request is relevant for Stylix
|
||||
|
||||
options:
|
||||
- label: >-
|
||||
I assert that this is not a duplicate of an [existing feature
|
||||
request](https://github.com/danth/stylix/issues).
|
||||
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
attributes:
|
||||
label: Description
|
||||
|
||||
description: >-
|
||||
Describe the feature. Consider including links to existing themes, like
|
||||
a [tinted-theming repository](https://github.com/tinted-theming).
|
||||
|
||||
placeholder: Type your description here…
|
||||
|
||||
validations:
|
||||
required: true
|
||||
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
|
||||
<!--
|
||||
^ Please summarise the changes you have done and explain why they are necessary here ^
|
||||
|
||||
Please also link any relevant issues or pull requests e.g. `Closes: #<ISSUE-ID>`
|
||||
-->
|
||||
|
||||
## Things done
|
||||
|
||||
<!--
|
||||
Please check what applies. Note that these are not hard requirements but merely
|
||||
serve as information for reviewers.
|
||||
-->
|
||||
- [ ] Tested locally
|
||||
- [ ] Tested in [testbed](https://stylix.danth.me/testbeds.html)
|
||||
- [ ] Commit message follows [commit convention](https://stylix.danth.me/commit_convention.html)
|
||||
- [ ] Fits [style guide](https://stylix.danth.me/styling.html)
|
||||
- [ ] Respects license of any existing code used
|
||||
|
||||
## Notify maintainers
|
||||
|
||||
<!---
|
||||
If you are editing an existing target, consider pinging relevant
|
||||
module maintainers from `modules/<module>/meta.nix`.
|
||||
-->
|
||||
8
.github/workflows/backport.yml
vendored
8
.github/workflows/backport.yml
vendored
|
|
@ -26,11 +26,13 @@ jobs:
|
|||
steps:
|
||||
# Use a GitHub App rather than the default token so that GitHub Actions
|
||||
# workflows may run on the created pull request.
|
||||
- uses: actions/create-github-app-token@v1
|
||||
- uses: actions/create-github-app-token@v2
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BACKPORT_APP_ID }}
|
||||
private-key: ${{ secrets.BACKPORT_PRIVATE_KEY }}
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
permission-contents: write
|
||||
permission-pull-requests: write
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
|
|
|||
100
.github/workflows/check.yml
vendored
100
.github/workflows/check.yml
vendored
|
|
@ -12,83 +12,29 @@ permissions:
|
|||
contents: read
|
||||
|
||||
jobs:
|
||||
get-derivations:
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: DeterminateSystems/nix-installer-action@v16
|
||||
|
||||
- uses: cachix/cachix-action@v16
|
||||
with:
|
||||
name: stylix
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
continue-on-error: true
|
||||
|
||||
- id: get-derivations
|
||||
run: |
|
||||
set -o pipefail
|
||||
|
||||
nix flake show --json \
|
||||
github:${{
|
||||
github.repository
|
||||
}}/${{
|
||||
github.event.pull_request.head.sha || github.sha
|
||||
}} |
|
||||
jq --raw-output '
|
||||
def format_output($arch; $type):
|
||||
{
|
||||
arch: $arch,
|
||||
key: .,
|
||||
|
||||
os: (
|
||||
if $arch == "x86_64-linux" then
|
||||
"ubuntu-24.04"
|
||||
else
|
||||
"macos-14"
|
||||
end
|
||||
),
|
||||
|
||||
type: $type
|
||||
};
|
||||
|
||||
[
|
||||
["x86_64-linux", "x86_64-darwin"][] as $arch |
|
||||
(.checks[$arch] | keys) as $checks |
|
||||
(.packages[$arch] | keys) as $packages |
|
||||
(($checks - $packages)[] | format_output($arch; "checks")),
|
||||
($packages[] | format_output($arch; "packages"))
|
||||
] |
|
||||
"derivations=\(.)"
|
||||
' \
|
||||
>>"$GITHUB_OUTPUT" || {
|
||||
rm "$GITHUB_OUTPUT"
|
||||
false
|
||||
}
|
||||
|
||||
outputs:
|
||||
derivations: ${{ steps.get-derivations.outputs.derivations }}
|
||||
|
||||
check:
|
||||
runs-on: ${{ matrix.check.os }}
|
||||
|
||||
name: ${{ matrix.check.key }} on ${{ matrix.check.arch }}
|
||||
needs: get-derivations
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
|
||||
# https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job#choosing-github-hosted-runners
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
check: ${{ fromJSON(needs.get-derivations.outputs.derivations) }}
|
||||
include:
|
||||
- name: aarch64-linux
|
||||
runs-on: ubuntu-24.04-arm
|
||||
- name: aarch64-darwin
|
||||
runs-on: macos-15
|
||||
- name: x86_64-linux
|
||||
runs-on: ubuntu-24.04
|
||||
- name: x86_64-darwin
|
||||
runs-on: macos-13
|
||||
|
||||
steps:
|
||||
- uses: DeterminateSystems/nix-installer-action@v16
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
extra-conf: |-
|
||||
allow-import-from-derivation = ${{
|
||||
startsWith(matrix.check.key, 'testbed:') &&
|
||||
contains(matrix.check.key, ':schemeless') &&
|
||||
'true' ||
|
||||
'false'
|
||||
}}
|
||||
persist-credentials: false
|
||||
|
||||
- uses: DeterminateSystems/nix-installer-action@v16
|
||||
|
||||
- uses: cachix/cachix-action@v16
|
||||
with:
|
||||
|
|
@ -96,16 +42,4 @@ jobs:
|
|||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
continue-on-error: true
|
||||
|
||||
- run: |
|
||||
nix build --no-update-lock-file --print-build-logs \
|
||||
github:${{
|
||||
github.repository
|
||||
}}/${{
|
||||
github.event.pull_request.head.sha || github.sha
|
||||
}}#${{
|
||||
matrix.check.type
|
||||
}}.${{
|
||||
matrix.check.arch
|
||||
}}.${{
|
||||
matrix.check.key
|
||||
}}
|
||||
- run: nix develop --command stylix-check --no-nom
|
||||
|
|
|
|||
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
|
|
@ -25,6 +25,8 @@ jobs:
|
|||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: DeterminateSystems/nix-installer-action@v16
|
||||
|
||||
|
|
|
|||
44
.github/workflows/update-flake.yml
vendored
Normal file
44
.github/workflows/update-flake.yml
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
name: Update flake inputs
|
||||
|
||||
on: # yamllint disable-line rule:truthy
|
||||
schedule:
|
||||
- cron: "0 0 1 * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
flake-update:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository_owner == 'danth'
|
||||
strategy:
|
||||
matrix:
|
||||
branch: [master, release-24.11]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ matrix.branch }}
|
||||
- uses: DeterminateSystems/nix-installer-action@v16
|
||||
|
||||
- id: generate-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
permission-contents: write
|
||||
permission-pull-requests: write
|
||||
|
||||
- uses: DeterminateSystems/update-flake-lock@v24
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
branch: update_flake_lock_action_${{ matrix.branch }}
|
||||
commit-msg: "stylix: update all flake inputs"
|
||||
pr-title: "${{ contains('release', ${{ matrix.branch }}) && '[${{ matrix.branch }}] ' || '' }}stylix: update all flake inputs" # yamllint disable-line rule:line-length
|
||||
pr-labels: dependencies
|
||||
# yamllint disable rule:line-length
|
||||
pr-body: |
|
||||
Automated changes by the [update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) GitHub Action.
|
||||
|
||||
```
|
||||
{{ env.GIT_COMMIT_MESSAGE }}
|
||||
```
|
||||
# yamllint enable rule:line-length
|
||||
|
|
@ -40,7 +40,7 @@ philosophy.
|
|||
Try a live demo of this dark theme by running:
|
||||
|
||||
```console
|
||||
nix run github:danth/stylix#testbed:gnome:default:dark:image:scheme
|
||||
nix run github:danth/stylix#testbed:gnome:default:dark:image:scheme:cursor
|
||||
```
|
||||
|
||||
### KDE Plasma 5
|
||||
|
|
|
|||
152
docs/default.nix
152
docs/default.nix
|
|
@ -3,7 +3,7 @@
|
|||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
}@args:
|
||||
|
||||
let
|
||||
nixosConfiguration = lib.nixosSystem {
|
||||
|
|
@ -43,13 +43,20 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
metadata = import "${inputs.self}/stylix/meta.nix" args;
|
||||
|
||||
# We construct an index of all Stylix options, using the following format:
|
||||
#
|
||||
# {
|
||||
# "src/options/modules/«module».md" = {
|
||||
# referenceSection = "Modules";
|
||||
# readme = "modules/«module»/README.md";
|
||||
# defaultReadme = "note about the path above not existing";
|
||||
# readme = ''
|
||||
# Content of modules/«module»/README.md, or a default title
|
||||
# followed by a note about that file not existing.
|
||||
#
|
||||
# Summary of module maintainers, or a warning that the module
|
||||
# is unmaintained.
|
||||
# '';
|
||||
# optionsByPlatform = {
|
||||
# home_manager = [ ... ];
|
||||
# nixos = [ ... ];
|
||||
|
|
@ -58,8 +65,10 @@ let
|
|||
#
|
||||
# "src/options/platforms/«platform».md" = {
|
||||
# referenceSection = "Platforms";
|
||||
# readme = "docs/src/options/platforms/«platform».md";
|
||||
# defaultReadme = "note about the path above not existing";
|
||||
# readme = ''
|
||||
# Content of docs/src/options/platforms/«platform».md, or a default
|
||||
# title followed by a note about that file not existing.
|
||||
# '';
|
||||
# optionsByPlatform.«platform» = [ ... ];
|
||||
# };
|
||||
# }
|
||||
|
|
@ -119,13 +128,93 @@ let
|
|||
page = "src/options/modules/${module}.md";
|
||||
emptyPage = {
|
||||
referenceSection = "Modules";
|
||||
readme = "${inputs.self}/modules/${module}/README.md";
|
||||
defaultReadme = ''
|
||||
# ${module}
|
||||
> [!NOTE]
|
||||
> This module doesn't include any additional documentation. You
|
||||
> can browse the options it provides below.
|
||||
'';
|
||||
|
||||
readme =
|
||||
let
|
||||
path = "${inputs.self}/modules/${module}/README.md";
|
||||
|
||||
# This doesn't count as IFD because ${inputs.self} is a flake input
|
||||
#
|
||||
# In addition, this checks that the README.md starts with an
|
||||
# appropriate title
|
||||
mainText =
|
||||
let
|
||||
name = lib.throwIfNot (
|
||||
metadata ? ${module}.name
|
||||
) "stylix: ${module} is missing `meta.name`" metadata.${module}.name;
|
||||
in
|
||||
if builtins.pathExists path then
|
||||
let
|
||||
text = builtins.readFile path;
|
||||
in
|
||||
lib.throwIfNot (
|
||||
(builtins.head (lib.splitString "\n" text)) == "# ${name}"
|
||||
) "README.md of ${name} must have a title which matches its `meta.name`" text
|
||||
else
|
||||
''
|
||||
# ${name}
|
||||
> [!NOTE]
|
||||
> This module doesn't include any additional documentation.
|
||||
> You can browse the options it provides below.
|
||||
'';
|
||||
|
||||
maintainers =
|
||||
lib.throwIfNot (metadata ? ${module}.maintainers)
|
||||
"stylix: ${module} is missing `meta.maintainers`"
|
||||
metadata.${module}.maintainers;
|
||||
|
||||
# Render a maintainer's name and a link to the best contact
|
||||
# information we have for them.
|
||||
#
|
||||
# The reasoning behind the order of preference is as follows:
|
||||
#
|
||||
# - GitHub:
|
||||
# - May link to multiple contact methods
|
||||
# - More likely to have up-to-date information than the
|
||||
# maintainers list
|
||||
# - Protects the email address from crawlers
|
||||
# - Email:
|
||||
# - Very commonly used
|
||||
# - Matrix:
|
||||
# - Only other contact method in the schema
|
||||
# (as of March 2025)
|
||||
# - Name:
|
||||
# - If no other information is available, then just show
|
||||
# the maintainer's name without a link
|
||||
renderMaintainer =
|
||||
maintainer:
|
||||
if maintainer ? github then
|
||||
"[${maintainer.name}](https://github.com/${maintainer.github})"
|
||||
else if maintainer ? email then
|
||||
"[${maintainer.name}](mailto:${maintainer.email})"
|
||||
else if maintainer ? matrix then
|
||||
"[${maintainer.name}](https://matrix.to/#/${maintainer.matrix})"
|
||||
else
|
||||
maintainer.name;
|
||||
|
||||
joinItems =
|
||||
items:
|
||||
if builtins.length items <= 2 then
|
||||
builtins.concatStringsSep " and " items
|
||||
else
|
||||
builtins.concatStringsSep ", " (
|
||||
lib.dropEnd 1 items ++ [ "and ${lib.last items}" ]
|
||||
);
|
||||
|
||||
renderedMaintainers = joinItems (map renderMaintainer maintainers);
|
||||
|
||||
maintainersText =
|
||||
if maintainers == [ ] then
|
||||
"This module has no [dedicated maintainers](../../modules.md#maintainers)."
|
||||
else
|
||||
"This module is maintained by ${renderedMaintainers}.";
|
||||
in
|
||||
lib.concatLines [
|
||||
mainText
|
||||
"## Module information"
|
||||
maintainersText
|
||||
];
|
||||
|
||||
# Module pages initialise all platforms to an empty list, so that
|
||||
# '*None provided.*' indicates platforms where the module isn't
|
||||
# available.
|
||||
|
|
@ -138,13 +227,25 @@ let
|
|||
page = "src/options/platforms/${platform}.md";
|
||||
emptyPage = {
|
||||
referenceSection = "Platforms";
|
||||
readme = "${inputs.self}/docs/src/options/platforms/${platform}.md";
|
||||
defaultReadme = ''
|
||||
# ${platform.name}
|
||||
> Documentation is not available for this platform. Its main
|
||||
> options are listed below, and you may find more specific options
|
||||
> in the documentation for each module.
|
||||
'';
|
||||
readme =
|
||||
let
|
||||
path = "${inputs.self}/docs/src/options/platforms/${platform}.md";
|
||||
|
||||
# This doesn't count as IFD because ${inputs.self} is a flake input
|
||||
mainText =
|
||||
if builtins.pathExists path then
|
||||
builtins.readFile path
|
||||
else
|
||||
''
|
||||
# ${platform.name}
|
||||
> [!NOTE]
|
||||
> Documentation is not available for this platform. Its
|
||||
> main options are listed below, and you may find more
|
||||
> specific options in the documentation for each module.
|
||||
'';
|
||||
in
|
||||
mainText;
|
||||
|
||||
# Platform pages only initialise that platform, since showing other
|
||||
# platforms here would be nonsensical.
|
||||
optionsByPlatform.${platform} = [ ];
|
||||
|
|
@ -220,8 +321,9 @@ let
|
|||
builtins.throw "declaration not in ${declarationPrefix}: ${declarationString}";
|
||||
|
||||
# You can embed HTML inside a Markdown document, but to render further
|
||||
# Markdown within that HTML, it must be surrounded by blank lines.
|
||||
# This function helps with that.
|
||||
# Markdown between the HTML tags, it must be surrounded by blank lines:
|
||||
# see https://spec.commonmark.org/0.31.2/#html-blocks. This function
|
||||
# helps with that.
|
||||
#
|
||||
# In the following functions, we use concatStrings to build embedded HTML,
|
||||
# rather than ${} and multiline strings, because Markdown is sensitive to
|
||||
|
|
@ -328,18 +430,12 @@ let
|
|||
renderPage =
|
||||
_path: page:
|
||||
let
|
||||
readme =
|
||||
# This doesn't count as IFD because ${inputs.self} is a flake input
|
||||
if builtins.pathExists page.readme then
|
||||
builtins.readFile page.readme
|
||||
else
|
||||
page.defaultReadme;
|
||||
options = lib.concatStrings (
|
||||
lib.mapAttrsToList renderPlatform page.optionsByPlatform
|
||||
);
|
||||
in
|
||||
lib.concatLines [
|
||||
readme
|
||||
page.readme
|
||||
options
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Enable
|
||||
|
||||
To enable the Stylix module, declare:
|
||||
Stylix must be enabled before it will apply any changes to your system:
|
||||
|
||||
```nix
|
||||
{
|
||||
|
|
@ -10,12 +10,6 @@ To enable the Stylix module, declare:
|
|||
}
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> The global enable option was recently added, so you may come across old
|
||||
> examples which don't include it. No other settings will take effect unless
|
||||
> `stylix.enable` is set to `true`.
|
||||
|
||||
## Color scheme
|
||||
|
||||
### Handmade schemes
|
||||
|
|
@ -212,16 +206,19 @@ extension of it.
|
|||
For example:
|
||||
|
||||
```nix
|
||||
{ inputs, config, pkgs, ... }:
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
nixvim-package = inputs.nixvim-config.packages.${system}.default;
|
||||
extended-nixvim = nixvim-package.extend config.lib.stylix.nixvim.config;
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
extended-nixvim
|
||||
];
|
||||
environment.systemPackages = [ extended-nixvim ];
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -4,34 +4,56 @@
|
|||
|
||||
To enter the developer shell, run:
|
||||
|
||||
```console
|
||||
```sh
|
||||
nix develop
|
||||
```
|
||||
|
||||
To automatically enter the developer shell upon entering the project directory
|
||||
with [`direnv`](https://direnv.net), run:
|
||||
|
||||
```console
|
||||
```sh
|
||||
direnv allow
|
||||
```
|
||||
|
||||
## pre-commit
|
||||
## `pre-commit`
|
||||
|
||||
The default developer shell leverages [`pre-commit`](https://pre-commit.com)
|
||||
hooks to simplify the process of reaching minimum quality standards for casual
|
||||
contributors.
|
||||
contributors. This means applying code formatters, and scanning for things like
|
||||
unused variables which should be removed.
|
||||
|
||||
By default, `pre-commit` only runs on staged files. To manually run
|
||||
[`pre-commit`](https://pre-commit.com) against all files, run:
|
||||
By default, once you have entered the developer shell, `pre-commit` runs
|
||||
automatically just before you create a commit. This will only look at the
|
||||
files which are about to be committed.
|
||||
|
||||
```console
|
||||
You can also run it manually against all files:
|
||||
|
||||
```sh
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
This is useful when submitting a patchset and `pre-commit` was not used on all
|
||||
commits. For example, suppose the first commit was created without `pre-commit`
|
||||
and touches `/flake.nix`. Installing `pre-commit` and then creating a second
|
||||
commit that touches `/README.md` will not run any hooks on `/flake.nix`.
|
||||
This is useful if a commit was created outside of the developer shell, and
|
||||
you need to apply `pre-commit` to your previous changes.
|
||||
|
||||
Note that the `outputs.checks.${system}.git-hooks` output always runs against
|
||||
all files.
|
||||
Note that there is also a flake output, `.#checks.«system».git-hooks`, which
|
||||
always runs against all files but does not have access to apply changes. This
|
||||
is used in GitHub Actions to ensure that `pre-commit` has been applied.
|
||||
|
||||
## `stylix-check`
|
||||
|
||||
When a pull request is opened, we use GitHub Actions to build everything under
|
||||
`.#checks`. This includes the previously mentioned `.#checks.«system».git-hooks`,
|
||||
and every [testbed](./testbeds.md).
|
||||
|
||||
You might sometimes find it useful to run these same checks locally. The built
|
||||
in `nix flake check` command does this, however it can be quite slow compared
|
||||
to the script we use on GitHub Actions.
|
||||
|
||||
To use the same script that we use, you can run this command within the
|
||||
developer shell:
|
||||
|
||||
```sh
|
||||
stylix-check
|
||||
```
|
||||
|
||||
This is based on [`nix-fast-build`](https://github.com/Mic92/nix-fast-build#readme).
|
||||
|
|
|
|||
|
|
@ -13,12 +13,17 @@ screens, and display managers.
|
|||
stylix.url = "github:danth/stylix";
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, stylix, ... }: {
|
||||
nixosConfigurations."«hostname»" = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [ stylix.nixosModules.stylix ./configuration.nix ];
|
||||
outputs =
|
||||
{ nixpkgs, stylix, ... }:
|
||||
{
|
||||
nixosConfigurations."«hostname»" = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
stylix.nixosModules.stylix
|
||||
./configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
<small>Minimal `flake.nix` for a NixOS configuration.</small>
|
||||
|
|
@ -64,12 +69,21 @@ to NixOS via [Flakes][nix-flakes].
|
|||
stylix.url = "github:danth/stylix";
|
||||
};
|
||||
|
||||
outputs = { darwin, nixpkgs, stylix, ... }: {
|
||||
darwinConfigurations."«hostname»" = darwin.lib.darwinSystem {
|
||||
system = "aarch64-darwin";
|
||||
modules = [ stylix.darwinModules.stylix ./configuration.nix ];
|
||||
outputs =
|
||||
{
|
||||
darwin,
|
||||
stylix,
|
||||
...
|
||||
}:
|
||||
{
|
||||
darwinConfigurations."«hostname»" = darwin.lib.darwinSystem {
|
||||
system = "aarch64-darwin";
|
||||
modules = [
|
||||
stylix.darwinModules.stylix
|
||||
./configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
<small>Minimal `flake.nix` for a nix-darwin configuration.</small>
|
||||
|
|
@ -95,12 +109,22 @@ a similar fashion to NixOS via [Flakes][nix-flakes].
|
|||
stylix.url = "github:danth/stylix";
|
||||
};
|
||||
|
||||
outputs = { nix-on-droid, nixpkgs, stylix, ... }: {
|
||||
nixOnDroidConfigurations.default = nix-on-droid.lib.nixOnDroidConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages."aarch64-linux";
|
||||
modules = [ stylix.nixOnDroidModules.stylix ./nix-on-droid.nix ];
|
||||
outputs =
|
||||
{
|
||||
nix-on-droid,
|
||||
nixpkgs,
|
||||
stylix,
|
||||
...
|
||||
}:
|
||||
{
|
||||
nixOnDroidConfigurations.default = nix-on-droid.lib.nixOnDroidConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages."aarch64-linux";
|
||||
modules = [
|
||||
stylix.nixOnDroidModules.stylix
|
||||
./nix-on-droid.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
<small>Minimal `flake.nix` for a Nix-on-Droid configuration.</small>
|
||||
|
|
@ -127,12 +151,22 @@ is managed by someone else.
|
|||
stylix.url = "github:danth/stylix";
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, home-manager, stylix, ... }: {
|
||||
homeConfigurations."«username»" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [ stylix.homeManagerModules.stylix ./home.nix ];
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
stylix,
|
||||
...
|
||||
}:
|
||||
{
|
||||
homeConfigurations."«username»" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [
|
||||
stylix.homeManagerModules.stylix
|
||||
./home.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
<small>Minimal `flake.nix` for a Home Manager configuration.</small>
|
||||
|
|
@ -164,20 +198,20 @@ module as the `homeManagerModules.stylix` attribute.
|
|||
```nix
|
||||
let
|
||||
stylix = pkgs.fetchFromGitHub {
|
||||
owner = "danth";
|
||||
repo = "stylix";
|
||||
rev = "...";
|
||||
sha256 = "...";
|
||||
owner = "danth";
|
||||
repo = "stylix";
|
||||
rev = "...";
|
||||
sha256 = "...";
|
||||
};
|
||||
in {
|
||||
imports = [ (import stylix).homeManagerModules.stylix ];
|
||||
in
|
||||
{
|
||||
imports = [ (import stylix).homeManagerModules.stylix ];
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ./wallpaper.jpg;
|
||||
};
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ./wallpaper.jpg;
|
||||
};
|
||||
}
|
||||
|
||||
```
|
||||
<small>Example usage of the Home Manager module without flakes.</small>
|
||||
|
||||
|
|
|
|||
|
|
@ -46,14 +46,15 @@ A general format for modules is shown below.
|
|||
|
||||
```nix
|
||||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
options.stylix.targets.«name».enable =
|
||||
config.lib.stylix.mkEnableTarget "«human readable name»" true;
|
||||
|
||||
config = lib.mkIf (config.stylix.enable && config.stylix.targets.«name».enable) {
|
||||
programs.«name».backgroundColor = config.lib.stylix.colors.base00;
|
||||
};
|
||||
config =
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.«name».enable)
|
||||
{
|
||||
programs.«name».backgroundColor = config.lib.stylix.colors.base00;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -72,6 +73,34 @@ one of the following applies:
|
|||
- There is no reliable way to detect whether the target is installed, *and*
|
||||
enabling it unconditionally would cause problems.
|
||||
|
||||
### Overlays
|
||||
|
||||
If your module is provided as an overlay it uses a special format, where config
|
||||
is transparently passed to the platform (e.g. nixos) and overlay is a function
|
||||
taking two arguments and returning an attrset:
|
||||
|
||||
```nix
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.stylix.targets.«name».enable =
|
||||
config.lib.stylix.mkEnableTarget "«human readable name»" true;
|
||||
|
||||
overlay =
|
||||
final: prev:
|
||||
lib.optionalAttrs
|
||||
(config.stylix.enable && config.stylix.targets.«name».enable)
|
||||
{
|
||||
«name» = prev.«name».overrideAttrs (oldAttrs: {
|
||||
|
||||
});
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## How to apply colors
|
||||
|
||||
Refer to the [style guide](./styling.md) to see how colors are named,
|
||||
|
|
@ -94,11 +123,13 @@ it as a function. This returns a derivation which builds the template.
|
|||
```nix
|
||||
{
|
||||
environment.variables.MY_APPLICATION_CONFIG_FILE =
|
||||
let configFile = config.lib.stylix.colors {
|
||||
template = ./config.toml.mustache;
|
||||
extension = ".toml";
|
||||
};
|
||||
in "${configFile}";
|
||||
let
|
||||
configFile = config.lib.stylix.colors {
|
||||
template = ./config.toml.mustache;
|
||||
extension = ".toml";
|
||||
};
|
||||
in
|
||||
"${configFile}";
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -114,10 +145,17 @@ slow and should be avoided.
|
|||
For everything else, like fonts and wallpapers, you can just take option values
|
||||
directly from `config`. See the reference pages for a list of options.
|
||||
|
||||
## Maintainers
|
||||
## Metadata
|
||||
|
||||
New modules must have at least one maintainer defined in
|
||||
`/modules/«module»/meta.nix`.
|
||||
Metadata is stored in `/modules/«module»/meta.nix`. The following attributes are
|
||||
available under `meta`:
|
||||
|
||||
- `maintainers`: required list of maintainers. See [Maintainers](#maintainers) section.
|
||||
- `name`: required human-readable string name.
|
||||
|
||||
### Maintainers
|
||||
|
||||
New modules must have at least one maintainer.
|
||||
|
||||
If you are not already listed in the Nixpkgs `/maintainers/maintainer-list.nix`
|
||||
maintainer list, add yourself to `/stylix/maintainers.nix`.
|
||||
|
|
@ -135,7 +173,10 @@ number of maintainers:
|
|||
- ```nix
|
||||
{ lib, ... }:
|
||||
{
|
||||
maintainers = with lib.maintainers; [ danth naho ];
|
||||
maintainers = with lib.maintainers; [
|
||||
danth
|
||||
naho
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -167,3 +208,11 @@ This will be inserted before the automatically generated list of options.
|
|||
|
||||
Adding [testbeds](./testbeds.md) for new modules is encouraged, but not
|
||||
mandatory.
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
### `home.activation` Scripts
|
||||
|
||||
Any script run by `home.activation` must be preceded by `run` if the script is
|
||||
to produce any permanent changes. Without this `run` wrapper, the script is run
|
||||
in dry-run mode.
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ If you combined Home Manager with your NixOS configuration, write these
|
|||
options within a Home Manager section, either for all users:
|
||||
|
||||
```nix
|
||||
home-manager.sharedModules = [{
|
||||
stylix.targets.xyz.enable = false;
|
||||
}];
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
stylix.targets.xyz.enable = false;
|
||||
}
|
||||
];
|
||||
```
|
||||
|
||||
Or for a specific user:
|
||||
|
|
|
|||
|
|
@ -27,9 +27,11 @@ Home Manager module within the NixOS module using the following format:
|
|||
|
||||
```nix
|
||||
{
|
||||
home-manager.sharedModules = [{
|
||||
# Write Home Manager options here
|
||||
}];
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
# Write Home Manager options here
|
||||
}
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -52,10 +54,16 @@ github:danth/stylix
|
|||
└───x86_64-linux
|
||||
├───docs: package 'stylix-book'
|
||||
├───palette-generator: package 'palette-generator'
|
||||
├───testbed:gnome:default:dark: package 'testbed:gnome:default:dark'
|
||||
├───testbed:gnome:default:light: package 'testbed:gnome:default:light'
|
||||
├───testbed:kde:default:dark: package 'testbed:kde:default:dark'
|
||||
└───testbed:kde:default:light: package 'testbed:kde:default:light'
|
||||
├───"testbed:gnome:default:dark:image:scheme:cursor": package 'testbed-gnome-default-dark-image-scheme-cursor'
|
||||
├───"testbed:gnome:default:dark:image:scheme:cursorless": package 'testbed-gnome-default-dark-image-scheme-cursorless'
|
||||
├───"testbed:gnome:default:dark:image:schemeless:cursorless": package 'testbed-gnome-default-dark-image-schemeless-cursorless'
|
||||
├───"testbed:gnome:default:dark:imageless:scheme:cursorless": package 'testbed-gnome-default-dark-imageless-scheme-cursorless'
|
||||
├───"testbed:gnome:default:light:image:scheme:cursorless": package 'testbed-gnome-default-light-image-scheme-cursorless'
|
||||
├───"testbed:kde:default:dark:image:scheme:cursor": package 'testbed-kde-default-dark-image-scheme-cursor'
|
||||
├───"testbed:kde:default:dark:image:scheme:cursorless": package 'testbed-kde-default-dark-image-scheme-cursorless'
|
||||
├───"testbed:kde:default:dark:image:schemeless:cursorless": package 'testbed-kde-default-dark-image-schemeless-cursorless'
|
||||
├───"testbed:kde:default:dark:imageless:scheme:cursorless": package 'testbed-kde-default-dark-imageless-scheme-cursorless'
|
||||
└───"testbed:kde:default:light:image:scheme:cursorless": package 'testbed-kde-default-light-image-scheme-cursorless'
|
||||
```
|
||||
|
||||
(This has been edited down to only the relevant parts.)
|
||||
|
|
@ -64,7 +72,7 @@ To start a testbed, each of which is named in the format
|
|||
`testbed:«module»:«testbed»:«polarity»`, run the following command:
|
||||
|
||||
```console
|
||||
user@host:~$ nix run .#testbed:«module»:«testbed»:«polarity»
|
||||
user@host:~$ nix run .#testbed:«module»:«testbed»:«polarity»:«image»:«scheme»:«cursor»
|
||||
```
|
||||
|
||||
Any package with a name not fitting the given format is not a testbed,
|
||||
|
|
|
|||
|
|
@ -8,12 +8,11 @@ Here's an example Nix expression that takes an input image, applies a brightness
|
|||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
inputImage = ./path/to/image.jpg;
|
||||
brightness = -30;
|
||||
contrast = 0;
|
||||
fillColor = "black"
|
||||
fillColor = "black";
|
||||
in
|
||||
{
|
||||
stylix.image = pkgs.runCommand "dimmed-background.png" { } ''
|
||||
|
|
@ -29,14 +28,14 @@ Similarly, you can use a template image and repaint it for the current theme.
|
|||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
theme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml";
|
||||
wallpaper = pkgs.runCommand "image.png" {} ''
|
||||
COLOR=$(${pkgs.yq}/bin/yq -r .palette.base00 ${theme})
|
||||
${pkgs.imagemagick}/bin/magick -size 1920x1080 xc:$COLOR $out
|
||||
wallpaper = pkgs.runCommand "image.png" { } ''
|
||||
COLOR=$(${pkgs.yq}/bin/yq -r .palette.base00 ${theme})
|
||||
${pkgs.imagemagick}/bin/magick -size 1920x1080 xc:$COLOR $out
|
||||
'';
|
||||
in {
|
||||
in
|
||||
{
|
||||
stylix = {
|
||||
image = wallpaper;
|
||||
base16Scheme = theme;
|
||||
|
|
@ -48,7 +47,6 @@ Which is neatly implemented as a single function in `lib.stylix.pixel`:
|
|||
|
||||
```nix
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
stylix = {
|
||||
image = config.lib.stylix.pixel "base0A";
|
||||
|
|
@ -78,3 +76,27 @@ itself:
|
|||
imports = [ flake.inputs.stylix.nixosModules.stylix ];
|
||||
disabledModules = [ "${flake.inputs.stylix}/modules/<some-module>/nixos.nix" ];
|
||||
```
|
||||
|
||||
## Extending CSS options
|
||||
|
||||
When trying to extend an attrset option, the order does not matter because a
|
||||
declaration can only exist once. This is not the case for an option with the
|
||||
type of `lines` (most commonly `style` options in Home Manager). For these options,
|
||||
the order does matter and Nix cannot guarantee that there aren't conflicting
|
||||
definitions. Nix will still merge these options, but it will not warn you if
|
||||
there are conflicting declaration. In order to get around this, you can make sure
|
||||
Nix puts your CSS at the end - and thus prioritizes it - by using `lib.mkAfter`:
|
||||
|
||||
```nix
|
||||
{ lib, ... }:
|
||||
{
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = lib.mkAfter ''
|
||||
#workspaces button {
|
||||
background: @base01;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
```
|
||||
|
|
|
|||
42
flake.lock
generated
42
flake.lock
generated
|
|
@ -70,11 +70,11 @@
|
|||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1741628778,
|
||||
"narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=",
|
||||
"lastModified": 1743774811,
|
||||
"narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=",
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80",
|
||||
"rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -166,11 +166,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741379162,
|
||||
"narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=",
|
||||
"lastModified": 1742649964,
|
||||
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc",
|
||||
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -224,11 +224,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741635347,
|
||||
"narHash": "sha256-2aYfV44h18alHXopyfL4D9GsnpE5XlSVkp4MGe586VU=",
|
||||
"lastModified": 1743869639,
|
||||
"narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7fb8678716c158642ac42f9ff7a18c0800fea551",
|
||||
"rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -239,11 +239,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1743315132,
|
||||
"narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
|
||||
"lastModified": 1743583204,
|
||||
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "52faf482a3889b7619003c0daec593a1912fddc1",
|
||||
"rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -262,11 +262,11 @@
|
|||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741693509,
|
||||
"narHash": "sha256-emkxnsZstiJWmGACimyAYqIKz2Qz5We5h1oBVDyQjLw=",
|
||||
"lastModified": 1743884191,
|
||||
"narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "5479646b2574837f1899da78bdf9a48b75a9fb27",
|
||||
"rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -349,11 +349,11 @@
|
|||
"tinted-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1741468895,
|
||||
"narHash": "sha256-YKM1RJbL68Yp2vESBqeZQBjTETXo8mCTTzLZyckCfZk=",
|
||||
"lastModified": 1742851696,
|
||||
"narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"rev": "47c8c7726e98069cade5827e5fb2bfee02ce6991",
|
||||
"rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -365,11 +365,11 @@
|
|||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1740877430,
|
||||
"narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=",
|
||||
"lastModified": 1743296873,
|
||||
"narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "d48ee86394cbe45b112ba23ab63e33656090edb4",
|
||||
"rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
|||
96
flake.nix
96
flake.nix
|
|
@ -132,6 +132,7 @@
|
|||
git-hooks = inputs.git-hooks.lib.${system}.run {
|
||||
hooks = {
|
||||
deadnix.enable = true;
|
||||
editorconfig-checker.enable = true;
|
||||
hlint.enable = true;
|
||||
|
||||
nixfmt-rfc-style = {
|
||||
|
|
@ -147,17 +148,41 @@
|
|||
|
||||
src = ./.;
|
||||
};
|
||||
|
||||
maintainers-sorted = (import ./stylix/check-maintainers-sorted.nix) pkgs;
|
||||
} self.packages.${system};
|
||||
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
inherit (self.checks.${system}.git-hooks) shellHook;
|
||||
default =
|
||||
let
|
||||
check = pkgs.writeShellApplication {
|
||||
name = "stylix-check";
|
||||
runtimeInputs = with pkgs; [
|
||||
nix
|
||||
nix-fast-build
|
||||
];
|
||||
text = ''
|
||||
cores="$(nproc)"
|
||||
system="$(nix eval --expr builtins.currentSystem --impure --raw)"
|
||||
nix-fast-build \
|
||||
--eval-max-memory-size 512 \
|
||||
--eval-workers "$cores" \
|
||||
--flake ".#checks.$system" \
|
||||
--no-link \
|
||||
--skip-cached \
|
||||
"$@"
|
||||
'';
|
||||
};
|
||||
in
|
||||
pkgs.mkShell {
|
||||
inherit (self.checks.${system}.git-hooks) shellHook;
|
||||
|
||||
packages = [
|
||||
inputs.home-manager.packages.${system}.default
|
||||
self.checks.${system}.git-hooks.enabledPackages
|
||||
];
|
||||
};
|
||||
packages = [
|
||||
check
|
||||
inputs.home-manager.packages.${system}.default
|
||||
self.checks.${system}.git-hooks.enabledPackages
|
||||
];
|
||||
};
|
||||
|
||||
ghc = pkgs.mkShell {
|
||||
inputsFrom = [ self.devShells.${system}.default ];
|
||||
|
|
@ -169,38 +194,6 @@
|
|||
let
|
||||
universalPackages = {
|
||||
docs = import ./docs { inherit pkgs inputs lib; };
|
||||
|
||||
nix-flake-check = pkgs.writeShellApplication {
|
||||
meta.description = "A parallelized alternative to 'nix flake check'";
|
||||
name = "nix-flake-check";
|
||||
|
||||
runtimeInputs = with pkgs; [
|
||||
nix
|
||||
jq
|
||||
parallel
|
||||
];
|
||||
|
||||
text = ''
|
||||
nix flake show --json --no-update-lock-file ${self} |
|
||||
jq --raw-output '
|
||||
((.checks."${system}" // {}) | keys) as $checks |
|
||||
((.packages."${system}" // {}) | keys) as $packages |
|
||||
(($checks - $packages)[] | "checks.${system}.\(.)"),
|
||||
($packages[] | "packages.${system}.\(.)")
|
||||
' |
|
||||
parallel \
|
||||
--bar \
|
||||
--color \
|
||||
--color-failed \
|
||||
--halt now,fail=1 \
|
||||
--tagstring '{}' \
|
||||
'
|
||||
nix build --no-update-lock-file --print-build-logs \
|
||||
${self}#{}
|
||||
'
|
||||
'';
|
||||
};
|
||||
|
||||
palette-generator = pkgs.callPackage ./palette-generator { };
|
||||
};
|
||||
|
||||
|
|
@ -209,8 +202,19 @@
|
|||
testbedPackages = lib.optionalAttrs (lib.hasSuffix "-linux" system) (
|
||||
import ./stylix/testbed.nix { inherit pkgs inputs lib; }
|
||||
);
|
||||
|
||||
# Discord is not available on arm64. This workaround filters out
|
||||
# testbeds using that package, until we have a better way to handle
|
||||
# this.
|
||||
testbedPackages' =
|
||||
if system == "aarch64-linux" then
|
||||
lib.filterAttrs (
|
||||
name: _: !lib.hasPrefix "testbed:discord:vencord" name
|
||||
) testbedPackages
|
||||
else
|
||||
testbedPackages;
|
||||
in
|
||||
universalPackages // testbedPackages;
|
||||
universalPackages // testbedPackages';
|
||||
}
|
||||
)
|
||||
// {
|
||||
|
|
@ -222,7 +226,8 @@
|
|||
{
|
||||
stylix = {
|
||||
inherit inputs;
|
||||
paletteGenerator = self.packages.${pkgs.system}.palette-generator;
|
||||
paletteGenerator =
|
||||
self.packages.${pkgs.stdenv.hostPlatform.system}.palette-generator;
|
||||
base16 = base16.lib args;
|
||||
homeManagerIntegration.module = self.homeManagerModules.stylix;
|
||||
};
|
||||
|
|
@ -238,7 +243,8 @@
|
|||
{
|
||||
stylix = {
|
||||
inherit inputs;
|
||||
paletteGenerator = self.packages.${pkgs.system}.palette-generator;
|
||||
paletteGenerator =
|
||||
self.packages.${pkgs.stdenv.hostPlatform.system}.palette-generator;
|
||||
base16 = base16.lib args;
|
||||
};
|
||||
}
|
||||
|
|
@ -253,7 +259,8 @@
|
|||
{
|
||||
stylix = {
|
||||
inherit inputs;
|
||||
paletteGenerator = self.packages.${pkgs.system}.palette-generator;
|
||||
paletteGenerator =
|
||||
self.packages.${pkgs.stdenv.hostPlatform.system}.palette-generator;
|
||||
base16 = base16.lib args;
|
||||
homeManagerIntegration.module = self.homeManagerModules.stylix;
|
||||
};
|
||||
|
|
@ -268,7 +275,8 @@
|
|||
(import ./stylix/droid inputs)
|
||||
{
|
||||
stylix = {
|
||||
paletteGenerator = self.packages.${pkgs.system}.palette-generator;
|
||||
paletteGenerator =
|
||||
self.packages.${pkgs.stdenv.hostPlatform.system}.palette-generator;
|
||||
base16 = base16.lib args;
|
||||
homeManagerIntegration.module = self.homeManagerModules.stylix;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ in
|
|||
};
|
||||
size = sizes.terminal;
|
||||
};
|
||||
window.opacity = with config.stylix.opacity; terminal;
|
||||
window.opacity = config.stylix.opacity.terminal;
|
||||
colors = with colors; {
|
||||
primary = {
|
||||
foreground = base05;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Alacritty";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,6 @@
|
|||
options,
|
||||
...
|
||||
}:
|
||||
|
||||
with config.lib.stylix.colors;
|
||||
with config.stylix.fonts;
|
||||
let
|
||||
aviOpacity = toString config.stylix.opacity.popups;
|
||||
in
|
||||
{
|
||||
options.stylix.targets.avizo.enable =
|
||||
config.lib.stylix.mkEnableTarget "Avizo" true;
|
||||
|
|
@ -19,13 +13,18 @@ in
|
|||
lib.mkIf (config.stylix.enable && config.stylix.targets.avizo.enable) {
|
||||
services.avizo = {
|
||||
settings = {
|
||||
default = {
|
||||
background = "rgba(${base01-rgb-r}, ${base01-rgb-g}, ${base01-rgb-b}, ${aviOpacity})";
|
||||
border-color = "rgba(${base0D-rgb-r}, ${base0D-rgb-g}, ${base0D-rgb-b}, ${aviOpacity})";
|
||||
bar-fg-color = "rgba(${base05-rgb-r}, ${base05-rgb-g}, ${base05-rgb-b}, ${aviOpacity})";
|
||||
bar-bg-color = "rgba(${base01-rgb-r}, ${base01-rgb-g}, ${base01-rgb-b}, ${aviOpacity})";
|
||||
image-opacity = aviOpacity;
|
||||
};
|
||||
default =
|
||||
with config.lib.stylix.colors;
|
||||
let
|
||||
aviOpacity = toString config.stylix.opacity.popups;
|
||||
in
|
||||
{
|
||||
background = "rgba(${base01-rgb-r}, ${base01-rgb-g}, ${base01-rgb-b}, ${aviOpacity})";
|
||||
border-color = "rgba(${base0D-rgb-r}, ${base0D-rgb-g}, ${base0D-rgb-b}, ${aviOpacity})";
|
||||
bar-fg-color = "rgba(${base05-rgb-r}, ${base05-rgb-g}, ${base05-rgb-b}, ${aviOpacity})";
|
||||
bar-bg-color = "rgba(${base01-rgb-r}, ${base01-rgb-g}, ${base01-rgb-b}, ${aviOpacity})";
|
||||
image-opacity = aviOpacity;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Avizo";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!-- Original template: https://github.com/sharkdp/bat/blob/master/assets/themes/base16.tmTheme -->
|
||||
<!-- Copyright (c) 2018-2023 bat-developers (https://github.com/sharkdp/bat). -->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>author</key>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "bat";
|
||||
}
|
||||
|
|
|
|||
20
modules/bat/testbeds/default.nix
Normal file
20
modules/bat/testbeds/default.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{ lib, pkgs, ... }:
|
||||
let
|
||||
package = pkgs.bat;
|
||||
in
|
||||
{
|
||||
environment = {
|
||||
loginShellInit = "${lib.getExe package} example.md";
|
||||
systemPackages = [ package ];
|
||||
};
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
home.file."example.md" = {
|
||||
source = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/sharkdp/bat/refs/heads/master/tests/syntax-tests/source/Markdown/example.md";
|
||||
hash = "sha256-VYYwgRFY1c2DPY7yGM8oF3zG4rtEpBWyqfPwmGZIkcA=";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -1,12 +1,4 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
with config.stylix.fonts;
|
||||
let
|
||||
bemenuOpacity = lib.toHexString (
|
||||
((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100
|
||||
);
|
||||
in
|
||||
{
|
||||
options.stylix.targets.bemenu = {
|
||||
enable = config.lib.stylix.mkEnableTarget "bemenu" true;
|
||||
|
|
@ -16,7 +8,7 @@ in
|
|||
Font size used for bemenu.
|
||||
'';
|
||||
type = with lib.types; nullOr int;
|
||||
default = sizes.popups;
|
||||
default = config.stylix.fonts.sizes.popups;
|
||||
}; # optional argument
|
||||
|
||||
alternate = lib.mkOption {
|
||||
|
|
@ -31,28 +23,36 @@ in
|
|||
config =
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.bemenu.enable)
|
||||
{
|
||||
programs.bemenu.settings = with config.stylix.targets.bemenu; {
|
||||
tb = "${base01}${bemenuOpacity}"; # Title bg
|
||||
nb = "${base01}${bemenuOpacity}"; # Normal bg
|
||||
fb = "${base01}${bemenuOpacity}"; # Filter bg
|
||||
hb = "${base03}${bemenuOpacity}"; # Highlighted bg
|
||||
sb = "${base03}${bemenuOpacity}"; # Selected bg
|
||||
scb = "${base01}"; # Scrollbar bg
|
||||
programs.bemenu.settings =
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
let
|
||||
inherit (config.stylix.targets.bemenu) alternate fontSize;
|
||||
bemenuOpacity = lib.toHexString (
|
||||
((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100
|
||||
);
|
||||
in
|
||||
{
|
||||
tb = "${base01}${bemenuOpacity}"; # Title bg
|
||||
nb = "${base01}${bemenuOpacity}"; # Normal bg
|
||||
fb = "${base01}${bemenuOpacity}"; # Filter bg
|
||||
hb = "${base03}${bemenuOpacity}"; # Highlighted bg
|
||||
sb = "${base03}${bemenuOpacity}"; # Selected bg
|
||||
scb = "${base01}"; # Scrollbar bg
|
||||
|
||||
hf = "${base0A}"; # Highlighted fg
|
||||
sf = "${base0B}"; # Selected fg
|
||||
tf = "${base05}"; # Title fg
|
||||
ff = "${base05}"; # Filter fg
|
||||
nf = "${base05}"; # Normal fg
|
||||
scf = "${base03}"; # Scrollbar fg
|
||||
hf = "${base0A}"; # Highlighted fg
|
||||
sf = "${base0B}"; # Selected fg
|
||||
tf = "${base05}"; # Title fg
|
||||
ff = "${base05}"; # Filter fg
|
||||
nf = "${base05}"; # Normal fg
|
||||
scf = "${base03}"; # Scrollbar fg
|
||||
|
||||
ab = "${if alternate then base00 else base01}"; # Alternate bg
|
||||
af = "${if alternate then base04 else base05}"; # Alternate fg
|
||||
ab = "${if alternate then base00 else base01}"; # Alternate bg
|
||||
af = "${if alternate then base04 else base05}"; # Alternate fg
|
||||
|
||||
# Font name
|
||||
fn = "${sansSerif.name} ${
|
||||
lib.optionalString (fontSize != null) (builtins.toString fontSize)
|
||||
}";
|
||||
};
|
||||
# Font name
|
||||
fn = "${config.stylix.fonts.sansSerif.name} ${
|
||||
lib.optionalString (fontSize != null) (builtins.toString fontSize)
|
||||
}";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.noodlez1232 ];
|
||||
name = "bemenu";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,15 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
in
|
||||
{
|
||||
options.stylix.targets.bspwm.enable =
|
||||
config.lib.stylix.mkEnableTarget "bspwm" true;
|
||||
|
||||
config = lib.mkIf (config.stylix.enable && config.stylix.targets.bspwm.enable) {
|
||||
xsession.windowManager.bspwm.settings = {
|
||||
normal_border_color = colors.base03;
|
||||
active_border_color = colors.base0C;
|
||||
focused_border_color = colors.base0D;
|
||||
presel_feedback_color = colors.base00;
|
||||
};
|
||||
xsession.windowManager.bspwm.settings =
|
||||
with config.lib.stylix.colors.withHashtag; {
|
||||
normal_border_color = base03;
|
||||
active_border_color = base0C;
|
||||
focused_border_color = base0D;
|
||||
presel_feedback_color = base00;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "bspwm";
|
||||
}
|
||||
|
|
|
|||
17
modules/bspwm/testbeds/default.nix
Normal file
17
modules/bspwm/testbeds/default.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
windowManager.bspwm.enable = true;
|
||||
};
|
||||
|
||||
home-manager.sharedModules = lib.singleton {
|
||||
xsession.windowManager.bspwm = {
|
||||
enable = true;
|
||||
|
||||
# We need something to open a window so that we can check the window borders
|
||||
startupPrograms = [ "${lib.getExe pkgs.kitty}" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,4 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
in
|
||||
{
|
||||
options.stylix.targets.btop.enable =
|
||||
config.lib.stylix.mkEnableTarget "btop" true;
|
||||
|
|
@ -21,50 +17,51 @@ in
|
|||
theme_background = lib.mkIf (config.stylix.opacity.terminal != 1.0) false;
|
||||
};
|
||||
|
||||
xdg.configFile."btop/themes/stylix.theme".text = with colors; ''
|
||||
#Generated by Stylix
|
||||
theme[main_bg]="${base00}"
|
||||
theme[main_fg]="${base05}"
|
||||
theme[title]="${base05}"
|
||||
theme[hi_fg]="${base0D}"
|
||||
theme[selected_bg]="${base03}"
|
||||
theme[selected_fg]="${base0D}"
|
||||
theme[inactive_fg]="${base04}"
|
||||
theme[graph_text]="${base06}"
|
||||
theme[meter_bg]="${base03}"
|
||||
theme[proc_misc]="${base06}"
|
||||
theme[cpu_box]="${base0E}"
|
||||
theme[mem_box]="${base0B}"
|
||||
theme[net_box]="${base0C}"
|
||||
theme[proc_box]="${base0D}"
|
||||
theme[div_line]="${base01}"
|
||||
theme[temp_start]="${base0B}"
|
||||
theme[temp_mid]="${base0A}"
|
||||
theme[temp_end]="${base08}"
|
||||
theme[cpu_start]="${base0B}"
|
||||
theme[cpu_mid]="${base0A}"
|
||||
theme[cpu_end]="${base08}"
|
||||
theme[free_start]="${base0A}"
|
||||
theme[free_mid]="${base0B}"
|
||||
theme[free_end]="${base0B}"
|
||||
theme[cached_start]="${base0C}"
|
||||
theme[cached_mid]="${base0C}"
|
||||
theme[cached_end]="${base0A}"
|
||||
theme[available_start]="${base08}"
|
||||
theme[available_mid]="${base0A}"
|
||||
theme[available_end]="${base0B}"
|
||||
theme[used_start]="${base0A}"
|
||||
theme[used_mid]="${base09}"
|
||||
theme[used_end]="${base08}"
|
||||
theme[download_start]="${base0B}"
|
||||
theme[download_mid]="${base0A}"
|
||||
theme[download_end]="${base08}"
|
||||
theme[upload_start]="${base0B}"
|
||||
theme[upload_mid]="${base0A}"
|
||||
theme[upload_end]="${base08}"
|
||||
theme[process_start]="${base0B}"
|
||||
theme[process_mid]="${base0A}"
|
||||
theme[process_end]="${base08}"
|
||||
'';
|
||||
xdg.configFile."btop/themes/stylix.theme".text =
|
||||
with config.lib.stylix.colors.withHashtag; ''
|
||||
#Generated by Stylix
|
||||
theme[main_bg]="${base00}"
|
||||
theme[main_fg]="${base05}"
|
||||
theme[title]="${base05}"
|
||||
theme[hi_fg]="${base0D}"
|
||||
theme[selected_bg]="${base03}"
|
||||
theme[selected_fg]="${base0D}"
|
||||
theme[inactive_fg]="${base04}"
|
||||
theme[graph_text]="${base06}"
|
||||
theme[meter_bg]="${base03}"
|
||||
theme[proc_misc]="${base06}"
|
||||
theme[cpu_box]="${base0E}"
|
||||
theme[mem_box]="${base0B}"
|
||||
theme[net_box]="${base0C}"
|
||||
theme[proc_box]="${base0D}"
|
||||
theme[div_line]="${base01}"
|
||||
theme[temp_start]="${base0B}"
|
||||
theme[temp_mid]="${base0A}"
|
||||
theme[temp_end]="${base08}"
|
||||
theme[cpu_start]="${base0B}"
|
||||
theme[cpu_mid]="${base0A}"
|
||||
theme[cpu_end]="${base08}"
|
||||
theme[free_start]="${base0A}"
|
||||
theme[free_mid]="${base0B}"
|
||||
theme[free_end]="${base0B}"
|
||||
theme[cached_start]="${base0C}"
|
||||
theme[cached_mid]="${base0C}"
|
||||
theme[cached_end]="${base0A}"
|
||||
theme[available_start]="${base08}"
|
||||
theme[available_mid]="${base0A}"
|
||||
theme[available_end]="${base0B}"
|
||||
theme[used_start]="${base0A}"
|
||||
theme[used_mid]="${base09}"
|
||||
theme[used_end]="${base08}"
|
||||
theme[download_start]="${base0B}"
|
||||
theme[download_mid]="${base0A}"
|
||||
theme[download_end]="${base08}"
|
||||
theme[upload_start]="${base0B}"
|
||||
theme[upload_mid]="${base0A}"
|
||||
theme[upload_end]="${base08}"
|
||||
theme[process_start]="${base0B}"
|
||||
theme[process_mid]="${base0A}"
|
||||
theme[process_end]="${base08}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "btop";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Cava";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Cavalier";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.danth ];
|
||||
name = "Chromium";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "kernel console";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,26 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors;
|
||||
|
||||
{
|
||||
options.stylix.targets.console.enable =
|
||||
config.lib.stylix.mkEnableTarget "the Linux kernel console" true;
|
||||
|
||||
config.console.colors =
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.console.enable)
|
||||
[
|
||||
base00-hex
|
||||
red
|
||||
green
|
||||
yellow
|
||||
blue
|
||||
magenta
|
||||
cyan
|
||||
base05-hex
|
||||
base03-hex
|
||||
red
|
||||
green
|
||||
yellow
|
||||
blue
|
||||
magenta
|
||||
cyan
|
||||
base06-hex
|
||||
];
|
||||
with config.lib.stylix.colors;
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.console.enable) [
|
||||
base00-hex
|
||||
red
|
||||
green
|
||||
yellow
|
||||
blue
|
||||
magenta
|
||||
cyan
|
||||
base05-hex
|
||||
base03-hex
|
||||
red
|
||||
green
|
||||
yellow
|
||||
blue
|
||||
magenta
|
||||
cyan
|
||||
base06-hex
|
||||
];
|
||||
}
|
||||
|
|
|
|||
21
modules/discord/README.md
Normal file
21
modules/discord/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Discord
|
||||
|
||||
This module provides a collection of targets related to
|
||||
[Discord](https://discord.com/). The same theme is used regardless of the
|
||||
method of installation.
|
||||
|
||||
## Vencord, Vesktop
|
||||
|
||||
These targets use the options for [Vencord](https://vencord.dev/) and
|
||||
[Vesktop](https://github.com/Vencord/Vesktop#readme) which are built in
|
||||
to Home Manager.
|
||||
|
||||
## Nixcord
|
||||
|
||||
This target leverages the modules provided the
|
||||
[Nixcord flake](https://github.com/KaylorBen/nixcord).
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The Nixcord target will have no effect unless Nixcord is properly
|
||||
> [imported](https://github.com/KaylorBen/nixcord?tab=readme-ov-file#how-to-use-nixcord)
|
||||
> into your configuration.
|
||||
|
|
@ -6,39 +6,45 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
template =
|
||||
let
|
||||
inherit (config.lib.stylix) colors;
|
||||
inherit (config.stylix) fonts;
|
||||
in
|
||||
import ./template.nix { inherit colors fonts; };
|
||||
template = import ./template.nix {
|
||||
inherit (config.lib.stylix) colors;
|
||||
inherit (config.stylix) fonts;
|
||||
};
|
||||
in
|
||||
{
|
||||
options.stylix.targets =
|
||||
let
|
||||
inherit (config.lib.stylix) mkEnableTarget;
|
||||
in
|
||||
{
|
||||
vencord.enable = mkEnableTarget "Vencord" true;
|
||||
vesktop.enable = mkEnableTarget "Vesktop" true;
|
||||
nixcord.enable = mkEnableTarget "Nixcord" true;
|
||||
};
|
||||
lib.mapAttrs
|
||||
(_: prettyName: {
|
||||
enable = config.lib.stylix.mkEnableTarget prettyName true;
|
||||
extraCss = lib.mkOption {
|
||||
description = "Extra CSS to added to ${prettyName}'s theme";
|
||||
type = lib.types.lines;
|
||||
default = "";
|
||||
};
|
||||
})
|
||||
{
|
||||
vencord = "Vencord";
|
||||
vesktop = "Vesktop";
|
||||
nixcord = "Nixcord";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.stylix.enable (
|
||||
lib.mkMerge [
|
||||
(lib.mkIf config.stylix.targets.vencord.enable {
|
||||
xdg.configFile."Vencord/themes/stylix.theme.css".text = template;
|
||||
xdg.configFile."Vencord/themes/stylix.theme.css".text =
|
||||
template + config.stylix.targets.vencord.extraCss;
|
||||
})
|
||||
|
||||
(lib.mkIf config.stylix.targets.vesktop.enable (
|
||||
lib.mkMerge [
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
|
||||
xdg.configFile."vesktop/themes/stylix.theme.css".text = template;
|
||||
xdg.configFile."vesktop/themes/stylix.theme.css".text =
|
||||
template + config.stylix.targets.vesktop.extraCss;
|
||||
})
|
||||
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
|
||||
home.file."Library/Application Support/vesktop/themes/stylix.theme.css".text =
|
||||
template;
|
||||
template + config.stylix.targets.vesktop.extraCss;
|
||||
})
|
||||
]
|
||||
))
|
||||
|
|
@ -51,11 +57,13 @@ in
|
|||
in
|
||||
lib.mkMerge [
|
||||
(lib.mkIf nixcord.discord.enable {
|
||||
"Vencord/themes/stylix.theme.css".text = template;
|
||||
"Vencord/themes/stylix.theme.css".text =
|
||||
template + config.stylix.targets.nixcord.extraCss;
|
||||
})
|
||||
|
||||
(lib.mkIf nixcord.vesktop.enable {
|
||||
"vesktop/themes/stylix.theme.css".text = template;
|
||||
"vesktop/themes/stylix.theme.css".text =
|
||||
template + config.stylix.targets.nixcord.extraCss;
|
||||
})
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ ];
|
||||
maintainers = [ lib.maintainers.Flameopathic ];
|
||||
name = "Discord";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,64 +1,479 @@
|
|||
{ colors, fonts }:
|
||||
''
|
||||
/**
|
||||
* @name Stylix
|
||||
* @author Stylix
|
||||
* @version 0.0.0
|
||||
* @description Theme configured via NixOS or Home Manager.
|
||||
**/
|
||||
/**
|
||||
* @name Stylix
|
||||
* @author Stylix
|
||||
* @version 0.0.0
|
||||
* @description Theme configured via NixOS or Home Manager.
|
||||
**/
|
||||
|
||||
:root {
|
||||
--font-primary: ${fonts.sansSerif.name};
|
||||
--font-display: ${fonts.sansSerif.name};
|
||||
--font-code: ${fonts.monospace.name};
|
||||
--base00: #${colors.base00}; /* Black */
|
||||
--base01: #${colors.base01}; /* Bright Black */
|
||||
--base02: #${colors.base02}; /* Grey */
|
||||
--base03: #${colors.base03}; /* Brighter Grey */
|
||||
--base04: #${colors.base04}; /* Bright Grey */
|
||||
--base05: #${colors.base05}; /* White */
|
||||
--base06: #${colors.base06}; /* Brighter White */
|
||||
--base07: #${colors.base07}; /* Bright White */
|
||||
--base08: #${colors.base08}; /* Red */
|
||||
--base09: #${colors.base09}; /* Orange */
|
||||
--base0A: #${colors.base0A}; /* Yellow */
|
||||
--base0B: #${colors.base0B}; /* Green */
|
||||
--base0C: #${colors.base0C}; /* Cyan */
|
||||
--base0D: #${colors.base0D}; /* Blue */
|
||||
--base0E: #${colors.base0E}; /* Purple */
|
||||
--base0F: #${colors.base0F}; /* Magenta */
|
||||
:root {
|
||||
--font-primary: ${fonts.sansSerif.name};
|
||||
--font-display: ${fonts.sansSerif.name};
|
||||
--font-code: ${fonts.monospace.name};
|
||||
--base00: #${colors.base00}; /* Black */
|
||||
--base01: #${colors.base01}; /* Bright Black */
|
||||
--base02: #${colors.base02}; /* Grey */
|
||||
--base03: #${colors.base03}; /* Brighter Grey */
|
||||
--base04: #${colors.base04}; /* Bright Grey */
|
||||
--base05: #${colors.base05}; /* White */
|
||||
--base06: #${colors.base06}; /* Brighter White */
|
||||
--base07: #${colors.base07}; /* Bright White */
|
||||
--base08: #${colors.base08}; /* Red */
|
||||
--base09: #${colors.base09}; /* Orange */
|
||||
--base0A: #${colors.base0A}; /* Yellow */
|
||||
--base0B: #${colors.base0B}; /* Green */
|
||||
--base0C: #${colors.base0C}; /* Cyan */
|
||||
--base0D: #${colors.base0D}; /* Blue */
|
||||
--base0E: #${colors.base0E}; /* Purple */
|
||||
--base0F: #${colors.base0F}; /* Magenta */
|
||||
|
||||
--primary-630: var(--base00); /* Autocomplete background */
|
||||
--primary-660: var(--base00); /* Search input background */
|
||||
--primary-630: var(--base00); /* Autocomplete background */
|
||||
--primary-660: var(--base00); /* Search input background */
|
||||
}
|
||||
|
||||
/* Copyright (c) 2025 Cole Schaefer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE. */
|
||||
|
||||
.theme-light,
|
||||
.theme-dark,
|
||||
.theme-darker,
|
||||
.theme-midnight,
|
||||
.visual-refresh {
|
||||
--activity-card-background: var(--base01) !important;
|
||||
--background-accent: var(--base03) !important;
|
||||
--background-floating: var(--base02) !important;
|
||||
--background-mentioned-hover: var(--base02) !important;
|
||||
--background-mentioned: var(--base01) !important;
|
||||
--background-message-highlight: var(--base01) !important;
|
||||
--background-message-hover: var(--base00) !important;
|
||||
--background-modifier-accent: var(--base02) !important;
|
||||
--background-modifier-active: var(--base02) !important;
|
||||
--background-modifier-hover: var(--base00) !important;
|
||||
--background-modifier-selected: var(--base01) !important;
|
||||
--background-primary: var(--base00) !important;
|
||||
--background-secondary-alt: var(--base01) !important;
|
||||
--background-secondary: var(--base01) !important;
|
||||
--background-surface-highest: var(--base02) !important;
|
||||
--background-surface-higher: var(--base02) !important;
|
||||
--background-surface-high: var(--base02) !important;
|
||||
--background-tertiary: var(--base00) !important;
|
||||
--background-base-low: var(--base01) !important;
|
||||
--background-base-lower: var(--base00) !important;
|
||||
--background-base-lowest: var(--base00) !important;
|
||||
--background-base-tertiary: var(--base00) !important;
|
||||
--background-code: var(--base02) !important;
|
||||
--background-mod-subtle: var(--base02) !important;
|
||||
--bg-base-secondary: var(--base01) !important;
|
||||
--bg-base-tertiary: var(--base00) !important;
|
||||
--bg-brand: var(--base03) !important;
|
||||
--bg-mod-faint: var(--base01) !important;
|
||||
--bg-overlay-2: var(--base01) !important;
|
||||
--bg-overlay-3: var(--base01) !important;
|
||||
--bg-overlay-color-inverse: var(--base03) !important;
|
||||
--bg-surface-raised: var(--base02) !important;
|
||||
--bg-surface-overlay: var(--base00) !important;
|
||||
--black: var(--base00) !important;
|
||||
--blurple-50: var(--base0B) !important;
|
||||
--border-faint: var(--base02) !important;
|
||||
--brand-05a: var(--base01) !important;
|
||||
--brand-10a: var(--base01) !important;
|
||||
--brand-15a: var(--base01) !important;
|
||||
--brand-260: var(--base0D) !important;
|
||||
--brand-360: var(--base0D) !important;
|
||||
--brand-500: var(--base0F) !important;
|
||||
--brand-560: var(--base01) !important;
|
||||
--button-danger-background: var(--base08) !important;
|
||||
--button-filled-brand-background: var(--base0D) !important;
|
||||
--button-filled-brand-background-hover: var(--base03) !important;
|
||||
--button-filled-brand-text: var(--base00) !important;
|
||||
--button-filled-brand-text-hover: var(--base05) !important;
|
||||
--button-outline-positive-border: var(--base0B) !important;
|
||||
--button-outline-danger-background-hover: var(--base08) !important;
|
||||
--button-outline-danger-border-hover: var(--base08) !important;
|
||||
--button-positive-background: var(--base0B) !important;
|
||||
--button-positive-background-hover: var(--base03) !important;
|
||||
--button-secondary-background: var(--base02) !important;
|
||||
--button-secondary-background-hover: var(--base03) !important;
|
||||
--card-primary-bg: var(--base02) !important;
|
||||
--channel-icon: var(--base04) !important;
|
||||
--channels-default: var(--base04) !important;
|
||||
--channel-text-area-placeholder: var(--base03) !important;
|
||||
--channeltextarea-background: var(--base01) !important;
|
||||
--chat-background-default: var(--base02) !important;
|
||||
--checkbox-background-checked: var(--base0D) !important;
|
||||
--checkbox-border-checked: var(--base0D) !important;
|
||||
--checkbox-background-default: var(--base02) !important;
|
||||
--checkbox-border-default: var(--base03) !important;
|
||||
--control-brand-foreground-new: var(--base0D) !important;
|
||||
--control-brand-foreground: var(--base04) !important;
|
||||
--custom-notice-text: var(--base01) !important;
|
||||
--font-display: var(--font, "gg sans") !important;
|
||||
--font-headline: var(--font, "gg sans") !important;
|
||||
--font-primary: var(--font, "gg sans") !important;
|
||||
--green-330: var(--base0B) !important;
|
||||
--green-360: var(--base0B) !important;
|
||||
--header-primary: var(--base04) !important;
|
||||
--header-secondary: var(--base04) !important;
|
||||
--home-background: var(--base00) !important;
|
||||
--info-warning-foreground: var(--base0A) !important;
|
||||
--input-background: var(--base02) !important;
|
||||
--interactive-active: var(--base05) !important;
|
||||
--interactive-hover: var(--base05) !important;
|
||||
--interactive-muted: var(--base03) !important;
|
||||
--interactive-normal: var(--base05) !important;
|
||||
--mention-background: var(--base03) !important;
|
||||
--mention-foreground: var(--base05) !important;
|
||||
--menu-item-danger-active-bg: var(--base08) !important;
|
||||
--menu-item-danger-hover-bg: var(--base08) !important;
|
||||
--menu-item-default-hover-bg: var(--base03) !important;
|
||||
--message-reacted-background: var(--base02) !important;
|
||||
--message-reacted-text: var(--base05) !important;
|
||||
--modal-background: var(--base01) !important;
|
||||
--modal-footer-background: var(--base00) !important;
|
||||
--notice-background-positive: var(--base0B) !important;
|
||||
--notice-text-positive: var(--base01) !important;
|
||||
--plum-23: var(--base02) !important;
|
||||
--primary-130: var(--base05) !important;
|
||||
--primary-300: var(--base05) !important;
|
||||
--primary-500: var(--base02) !important;
|
||||
--primary-600: var(--base00) !important;
|
||||
--primary-630: var(--base01) !important;
|
||||
--primary-660: var(--base00) !important;
|
||||
--primary-800: var(--base00) !important;
|
||||
--red-400: var(--base08) !important;
|
||||
--red-460: var(--base08) !important;
|
||||
--red-500: var(--base08) !important;
|
||||
--red-630: var(--base08) !important;
|
||||
--red: var(--base08) !important;
|
||||
--scrollbar-auto-thumb: var(--base00) !important;
|
||||
--scrollbar-auto-track: transparent;
|
||||
--scrollbar-thin-thumb: var(--base00) !important;
|
||||
--scrollbar-thin-track: transparent;
|
||||
--search-popout-option-fade: none;
|
||||
--search-popout-option-non-text-color: var(--base07) !important;
|
||||
--status-danger-background: var(--base08) !important;
|
||||
--status-danger: var(--base08) !important;
|
||||
--status-negative: var(--base08) !important;
|
||||
--status-positive-background: var(--base0B) !important;
|
||||
--status-positive-text: var(--base0B) !important;
|
||||
--status-positive: var(--base0B) !important;
|
||||
--status-success: var(--base0B) !important;
|
||||
--status-warning-background: var(--base03) !important;
|
||||
--status-warning: var(--base09) !important;
|
||||
--teal-430: var(--base0C) !important;
|
||||
--text-brand: var(--base07) !important;
|
||||
--text-feedback-positive: var(--base0B) !important;
|
||||
--text-feedback-negative: var(--base08) !important;
|
||||
--text-feedback-warning: var(--base09) !important;
|
||||
--text-feedback-success: var(--base0B) !important;
|
||||
--text-link: var(--base04) !important;
|
||||
--text-muted: var(--base05) !important;
|
||||
--text-negative: var(--base08) !important;
|
||||
--text-normal: var(--base05) !important;
|
||||
--text-positive: var(--base0B) !important;
|
||||
--text-primary: var(--base05) !important;
|
||||
--text-secondary: var(--base04) !important;
|
||||
--text-tertiary: var(--base03) !important;
|
||||
--text-warning: var(--base09) !important;
|
||||
--textbox-markdown-syntax: var(--base05) !important;
|
||||
--theme-base-color: var(--base00) !important;
|
||||
--white-100: var(--base05) !important;
|
||||
--white-200: var(--base05) !important;
|
||||
--white-500: var(--base05) !important;
|
||||
--white: var(--base05) !important;
|
||||
--yellow-360: var(--base0A) !important;
|
||||
--yellow-300: var(--base0A) !important;
|
||||
--__lottieIconColor: var(--base03) !important;
|
||||
}
|
||||
|
||||
.theme-light, .theme-dark {
|
||||
--search-popout-option-fade: none; /* Disable fade for search popout */
|
||||
--bg-overlay-2: var(--base00); /* These 2 are needed for proper threads coloring */
|
||||
--home-background: var(--base00);
|
||||
--bg-overlay-chat : var(--base00); /* Recolor forum channels */
|
||||
--background-primary: var(--base00);
|
||||
--background-secondary: var(--base01);
|
||||
--background-secondary-alt: var(--base01);
|
||||
--channeltextarea-background: var(--base01);
|
||||
--background-tertiary: var(--base00);
|
||||
--background-accent: var(--base0E);
|
||||
--background-floating: var(--base01);
|
||||
--background-modifier-hover: #{{base00-hex}}4c; /* 30% of base00 */
|
||||
--background-modifier-selected: var(--base00);
|
||||
--text-normal: var(--base05);
|
||||
--text-secondary: var(--base03);
|
||||
--text-muted: var(--base04);
|
||||
--text-link: var(--base0C);
|
||||
--interactive-normal: var(--base05);
|
||||
--interactive-hover: var(--base05);
|
||||
--interactive-active: var(--base07);
|
||||
--interactive-muted: var(--base03);
|
||||
--channels-default: var(--base04);
|
||||
--channel-icon: var(--base04);
|
||||
--header-primary: var(--base06);
|
||||
--header-secondary: var(--base04);
|
||||
--scrollbar-thin-track: transparent;
|
||||
--scrollbar-auto-track: transparent;
|
||||
/*--- Default Folder Color Recolor ---*/
|
||||
.default__459fb {
|
||||
background-color: var(--base07) !important;
|
||||
}
|
||||
|
||||
/*--- Add Friend Button Text Recolor ---*/
|
||||
.addFriend__133bf {
|
||||
color: var(--base00) !important;
|
||||
}
|
||||
|
||||
/*--- Close Icon Path Recolor ---*/
|
||||
svg[class^="closeIcon__"] path {
|
||||
fill: var(--base01) !important;
|
||||
}
|
||||
|
||||
/*--- Listen Along Invite Recolor ---*/
|
||||
.invite__4d3fa {
|
||||
background: var(--base01) !important;
|
||||
border-color: var(--base02) !important;
|
||||
}
|
||||
|
||||
/*--- Activity Card Background Recolor ---*/
|
||||
.card__73069 {
|
||||
background-color: var(--base01);
|
||||
}
|
||||
|
||||
div[class^="bar__"] {
|
||||
background-color: var(--base01) !important;
|
||||
border-color: var(--base02) !important;
|
||||
}
|
||||
/*--- Voice Bar Text Recolor ---*/
|
||||
.barText__7aaec {
|
||||
color: var(--base0B) !important;
|
||||
}
|
||||
.unreadIcon__7aaec {
|
||||
color: var(--base0B) !important;
|
||||
}
|
||||
|
||||
/*--- Mentions Bar Text Recolor ---*/
|
||||
.mentionsBar__7aaec .barText__7aaec {
|
||||
color: var(--base05) !important;
|
||||
}
|
||||
|
||||
/*--- Forum Background Recolor ---*/
|
||||
.container_f369db {
|
||||
background-color: var(--bg-overlay-2);
|
||||
}
|
||||
|
||||
/*--- Sidebar Icon Recolor ---*/
|
||||
.circleIconButton__5bc7e {
|
||||
color: var(--base04);
|
||||
}
|
||||
|
||||
/*--- Summaries Tag Icon Recolor ---*/
|
||||
.summariesBetaTag_cf58b5 {
|
||||
color: var(--base03);
|
||||
}
|
||||
|
||||
/*--- Folder Icon Recolor ---*/
|
||||
div.folderIconWrapper__48112 {
|
||||
background-color: var(--base01) !important;
|
||||
}
|
||||
|
||||
/*--- Voice Chat Action Icon Recolor ---*/
|
||||
path[fill^="rgb(88,101,242)"],
|
||||
path[stroke^="rgb(88,101,242)"] {
|
||||
fill: var(--base05) !important;
|
||||
stroke: var(--base05) !important;
|
||||
}
|
||||
.lottieIcon__5eb9b.lottieIconColors__5eb9b.buttonIcon_e131a9 {
|
||||
--__lottieIconColor: var(--base05) !important;
|
||||
}
|
||||
div[class^="actionButtons"] [class^="button"][class*="buttonColor_"],
|
||||
div[class^="actionButtons"] [class^="button"] [class*="buttonColor_"] {
|
||||
background-color: var(--base02);
|
||||
}
|
||||
|
||||
/* --- Checkbox Recolor (OFF) --- */
|
||||
.container__87bf1 {
|
||||
background-color: var(--base03) !important;
|
||||
}
|
||||
/* --- Checkbox Recolor (ON) --- */
|
||||
.checked__87bf1 {
|
||||
background-color: var(--base0B) !important;
|
||||
}
|
||||
path[fill^="rgba(35, 165, 90, 1)"] {
|
||||
fill: var(--base0B) !important;
|
||||
}
|
||||
|
||||
/* --- Secure Lock Icon Recolor --- */
|
||||
.lockIcon__2666b {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*--- Status Icon Recolor (DO NOT DISTURB) ---*/
|
||||
svg[fill^="#f23f43"],
|
||||
rect[fill^="#f23f43"] {
|
||||
fill: var(--status-danger) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (IDLE) ---*/
|
||||
svg[fill^="#f0b232"],
|
||||
rect[fill^="#f0b232"] {
|
||||
fill: var(--status-warning) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (ONLINE) ---*/
|
||||
path[fill^="#23a55a"],
|
||||
svg[fill^="#23a55a"],
|
||||
rect[fill^="#23a55a"] {
|
||||
fill: var(--status-positive) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (OFFLINE) ---*/
|
||||
svg[fill^="#80848e"],
|
||||
rect[fill^="#80848e"] {
|
||||
fill: var(--base03) !important;
|
||||
}
|
||||
|
||||
/*--- Default Color Swap ---*/
|
||||
path[fill^="currentColor"],
|
||||
svg[fill^="currentColor"],
|
||||
rect[fill^="currentColor"] {
|
||||
fill: var(--base06) !important;
|
||||
}
|
||||
path[d^="M12 22a10 10 0 1"] {
|
||||
fill: var(--base02) !important;
|
||||
}
|
||||
|
||||
/*--- Voice Chat Icon Badge Recolor ---*/
|
||||
div[class^="iconBadge"] path[d^="M12 3a1 1 0 0 0-1-1h-.06"],
|
||||
div[class^="iconBadge"] path[d^="M15.16 16.51c-.57.28"] {
|
||||
fill: var(--base05) !important;
|
||||
}
|
||||
|
||||
/*--- Nitro Icon Recolor ---*/
|
||||
.premiumLabel_e681d1 svg path,
|
||||
svg.guildBoostBadge__5dba5 path {
|
||||
fill: var(--base0E) !important;
|
||||
}
|
||||
|
||||
/*--- Server Booster Icon Recolor ---*/
|
||||
.premiumIcon__5d473 {
|
||||
color: var(--base0F);
|
||||
}
|
||||
|
||||
/*--- Call Container Recolor ---*/
|
||||
.callContainer_cb9592 {
|
||||
background-color: var(--base00);
|
||||
}
|
||||
.gradientContainer_bfe55a {
|
||||
background-image: var(--base00);
|
||||
}
|
||||
|
||||
/*--- Store Gradient Recolors ---*/
|
||||
.gradient_e9ef78 {
|
||||
background: var(--base01) !important;
|
||||
}
|
||||
.bannerGradient__955a3 {
|
||||
background: var(--base00) !important;
|
||||
}
|
||||
|
||||
/*--- Increase Text Legibility ---*/
|
||||
* {
|
||||
text-rendering: optimizeLegibility !important;
|
||||
}
|
||||
|
||||
/*--- Codeblock Syntax Highlighting Recolor ---*/
|
||||
.hljs-attr {
|
||||
color: var(--base06) !important;
|
||||
}
|
||||
.hljs-attribute {
|
||||
color: var(--base06) !important;
|
||||
}
|
||||
.hljs-number {
|
||||
color: var(--base06) !important;
|
||||
}
|
||||
.hljs-selector-class {
|
||||
color: var(--base06) !important;
|
||||
}
|
||||
.hljs-comment {
|
||||
color: var(--base03) !important;
|
||||
}
|
||||
.hljs-subst {
|
||||
color: var(--base0D) !important;
|
||||
}
|
||||
.hljs-selector-pseudo {
|
||||
color: var(--base0B) !important;
|
||||
}
|
||||
.hljs-section {
|
||||
color: var(--base0B) !important;
|
||||
}
|
||||
.hljs-keyword {
|
||||
color: var(--base08) !important;
|
||||
}
|
||||
.hljs-variable {
|
||||
color: var(--base08) !important;
|
||||
}
|
||||
.hljs-meta {
|
||||
color: var(--base03) !important;
|
||||
}
|
||||
.hljs-built_in {
|
||||
color: var(--base09) !important;
|
||||
}
|
||||
.hljs-string {
|
||||
color: var(--base0B) !important;
|
||||
}
|
||||
.hljs-title {
|
||||
color: var(--base0E) !important;
|
||||
}
|
||||
|
||||
/*--- Visual Refresh Recolor ---*/
|
||||
/*--- BIG WORK IN PROGRESS. DISCORD MADE SOME BIG CHANGES. ---*/
|
||||
.visual-refresh {
|
||||
div[class^="autocomplete__"] {
|
||||
background-color: var(--base02) !important;
|
||||
}
|
||||
path[fill^="rgba(88, 101, 242, 1)"] {
|
||||
fill: var(--base0B) !important;
|
||||
}
|
||||
div[class^="topicsPillContainer"] {
|
||||
--bg-overlay-2: var(--base02) !important;
|
||||
}
|
||||
.bg__960e4 {
|
||||
background: var(--base00) !important;
|
||||
}
|
||||
.wrapper_ef3116 {
|
||||
background-color: var(--base00) !important;
|
||||
}
|
||||
.sidebar_c48ade {
|
||||
background-color: var(--base00) !important;
|
||||
}
|
||||
.searchBar__97492 {
|
||||
background-color: var(--base02) !important;
|
||||
}
|
||||
.channelTextArea_f75fb0 {
|
||||
background: var(--base02) !important;
|
||||
}
|
||||
.chatContent_f75fb0 {
|
||||
background-color: var(--base01) !important;
|
||||
}
|
||||
.members_c8ffbb,
|
||||
.member_c8ffbb {
|
||||
background: var(--base00) !important;
|
||||
}
|
||||
.voiceBar__7aaec {
|
||||
background-color: var(--base02) !important;
|
||||
}
|
||||
button.button__67645.redGlow__67645,
|
||||
span.button__67645.redGlow__67645 {
|
||||
background-color: var(--base02) !important;
|
||||
}
|
||||
|
||||
/*--- Status Icon Recolor (DO NOT DISTURB) ---*/
|
||||
svg[fill^="#d83a42"],
|
||||
rect[fill^="#d83a42"] {
|
||||
fill: var(--status-danger) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (IDLE) ---*/
|
||||
svg[fill^="#ca9654"],
|
||||
rect[fill^="#ca9654"] {
|
||||
fill: var(--status-warning) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (ONLINE) ---*/
|
||||
path[fill^="#43a25a"],
|
||||
svg[fill^="#43a25a"],
|
||||
rect[fill^="#43a25a"] {
|
||||
fill: var(--status-positive) !important;
|
||||
}
|
||||
/*--- Status Icon Recolor (OFFLINE) ---*/
|
||||
svg[fill^="#83838b"],
|
||||
rect[fill^="#83838b"] {
|
||||
fill: var(--base03) !important;
|
||||
}
|
||||
}
|
||||
''
|
||||
|
|
|
|||
|
|
@ -1,40 +1,40 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
with config.stylix.fonts;
|
||||
let
|
||||
dunstOpacity = lib.toHexString (
|
||||
((builtins.floor (config.stylix.opacity.popups * 100 + 0.5)) * 255) / 100
|
||||
);
|
||||
in
|
||||
{
|
||||
options.stylix.targets.dunst.enable =
|
||||
config.lib.stylix.mkEnableTarget "Dunst" true;
|
||||
|
||||
config = lib.mkIf (config.stylix.enable && config.stylix.targets.dunst.enable) {
|
||||
services.dunst.settings = {
|
||||
global = {
|
||||
separator_color = base02;
|
||||
font = "${sansSerif.name} ${toString sizes.popups}";
|
||||
};
|
||||
services.dunst.settings =
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
let
|
||||
inherit (config.stylix) fonts;
|
||||
dunstOpacity = lib.toHexString (
|
||||
((builtins.floor (config.stylix.opacity.popups * 100 + 0.5)) * 255) / 100
|
||||
);
|
||||
in
|
||||
{
|
||||
global = {
|
||||
separator_color = base02;
|
||||
font = "${fonts.sansSerif.name} ${toString fonts.sizes.popups}";
|
||||
};
|
||||
|
||||
urgency_low = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base0B;
|
||||
};
|
||||
urgency_low = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base0B;
|
||||
};
|
||||
|
||||
urgency_normal = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base0E;
|
||||
};
|
||||
urgency_normal = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base0E;
|
||||
};
|
||||
|
||||
urgency_critical = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base08;
|
||||
urgency_critical = {
|
||||
background = base01 + dunstOpacity;
|
||||
foreground = base05;
|
||||
frame_color = base08;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "Dunst";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,15 +4,12 @@
|
|||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
with config.stylix.fonts;
|
||||
|
||||
let
|
||||
inherit (config.stylix) fonts;
|
||||
emacsOpacity = builtins.toString (
|
||||
builtins.ceil (config.stylix.opacity.applications * 100)
|
||||
);
|
||||
emacsSize = builtins.toString (sizes.terminal * 1.0);
|
||||
emacsSize = builtins.toString (fonts.sizes.terminal * 1.0);
|
||||
in
|
||||
{
|
||||
options.stylix.targets.emacs.enable =
|
||||
|
|
@ -21,49 +18,52 @@ in
|
|||
config = lib.mkIf (config.stylix.enable && config.stylix.targets.emacs.enable) {
|
||||
programs.emacs = {
|
||||
extraPackages = epkgs: [
|
||||
(epkgs.trivialBuild {
|
||||
pname = "base16-stylix-theme";
|
||||
version = "0.1.0";
|
||||
src = pkgs.writeText "base16-stylix-theme.el" ''
|
||||
(require 'base16-theme)
|
||||
(epkgs.trivialBuild (
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
{
|
||||
pname = "base16-stylix-theme";
|
||||
version = "0.1.0";
|
||||
src = pkgs.writeText "base16-stylix-theme.el" ''
|
||||
(require 'base16-theme)
|
||||
|
||||
(defvar base16-stylix-theme-colors
|
||||
'(:base00 "${base00}"
|
||||
:base01 "${base01}"
|
||||
:base02 "${base02}"
|
||||
:base03 "${base03}"
|
||||
:base04 "${base04}"
|
||||
:base05 "${base05}"
|
||||
:base06 "${base06}"
|
||||
:base07 "${base07}"
|
||||
:base08 "${base08}"
|
||||
:base09 "${base09}"
|
||||
:base0A "${base0A}"
|
||||
:base0B "${base0B}"
|
||||
:base0C "${base0C}"
|
||||
:base0D "${base0D}"
|
||||
:base0E "${base0E}"
|
||||
:base0F "${base0F}")
|
||||
"All colors for Base16 stylix are defined here.")
|
||||
(defvar base16-stylix-theme-colors
|
||||
'(:base00 "${base00}"
|
||||
:base01 "${base01}"
|
||||
:base02 "${base02}"
|
||||
:base03 "${base03}"
|
||||
:base04 "${base04}"
|
||||
:base05 "${base05}"
|
||||
:base06 "${base06}"
|
||||
:base07 "${base07}"
|
||||
:base08 "${base08}"
|
||||
:base09 "${base09}"
|
||||
:base0A "${base0A}"
|
||||
:base0B "${base0B}"
|
||||
:base0C "${base0C}"
|
||||
:base0D "${base0D}"
|
||||
:base0E "${base0E}"
|
||||
:base0F "${base0F}")
|
||||
"All colors for Base16 stylix are defined here.")
|
||||
|
||||
;; Define the theme
|
||||
(deftheme base16-stylix)
|
||||
;; Define the theme
|
||||
(deftheme base16-stylix)
|
||||
|
||||
;; Add all the faces to the theme
|
||||
(base16-theme-define 'base16-stylix base16-stylix-theme-colors)
|
||||
;; Add all the faces to the theme
|
||||
(base16-theme-define 'base16-stylix base16-stylix-theme-colors)
|
||||
|
||||
;; Mark the theme as provided
|
||||
(provide-theme 'base16-stylix)
|
||||
;; Mark the theme as provided
|
||||
(provide-theme 'base16-stylix)
|
||||
|
||||
;; Add path to theme to theme-path
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(file-name-directory
|
||||
(file-truename load-file-name)))
|
||||
;; Add path to theme to theme-path
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(file-name-directory
|
||||
(file-truename load-file-name)))
|
||||
|
||||
(provide 'base16-stylix-theme)
|
||||
'';
|
||||
packageRequires = [ epkgs.base16-theme ];
|
||||
})
|
||||
(provide 'base16-stylix-theme)
|
||||
'';
|
||||
packageRequires = [ epkgs.base16-theme ];
|
||||
}
|
||||
))
|
||||
];
|
||||
|
||||
extraConfig = ''
|
||||
|
|
@ -72,7 +72,7 @@ in
|
|||
(setq base16-theme-256-color-source 'colors)
|
||||
(load-theme 'base16-stylix t)
|
||||
;; Set font
|
||||
(set-face-attribute 'default nil :font (font-spec :family "${monospace.name}" :size ${emacsSize}))
|
||||
(set-face-attribute 'default nil :font (font-spec :family "${fonts.monospace.name}" :size ${emacsSize}))
|
||||
;; -----------------------------
|
||||
;; set opacity
|
||||
(add-to-list 'default-frame-alist '(alpha-background . ${emacsOpacity}))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.panchoh ];
|
||||
name = "Emacs";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.danth ];
|
||||
name = "Eye of GNOME";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,84 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="30"
|
||||
height="30"
|
||||
version="1.1"
|
||||
id="svg6"
|
||||
sodipodi:docname="highlight.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
viewBox="0 0 60 60"
|
||||
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">
|
||||
<defs
|
||||
id="defs10">
|
||||
width="30"
|
||||
height="30"
|
||||
version="1.1"
|
||||
id="svg6"
|
||||
sodipodi:docname="highlight.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
viewBox="0 0 60 60"
|
||||
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">
|
||||
<defs id="defs10">
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect998"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1"
|
||||
unit="px"
|
||||
method="arc"
|
||||
mode="F"
|
||||
radius="15"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect998"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1 @ F,0,0,1,0,15,0,1"
|
||||
unit="px"
|
||||
method="arc"
|
||||
mode="F"
|
||||
radius="15"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect996"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1"
|
||||
unit="px"
|
||||
method="bezier"
|
||||
mode="F"
|
||||
radius="0"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect996"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1 @ IC,0,0,1,0,0,0,1"
|
||||
unit="px"
|
||||
method="bezier"
|
||||
mode="F"
|
||||
radius="0"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="namedview8"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.0512821"
|
||||
inkscape:cx="-6.9406779"
|
||||
inkscape:cy="29.663135"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg6" />
|
||||
id="namedview8"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.0512821"
|
||||
inkscape:cx="-6.9406779"
|
||||
inkscape:cy="29.663135"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg6" />
|
||||
<path
|
||||
id="svg_1"
|
||||
width="40"
|
||||
height="40"
|
||||
x="10.000001"
|
||||
y="10.000001"
|
||||
fill="#015ad7"
|
||||
stroke="#000000"
|
||||
stroke-width="0"
|
||||
rx="0"
|
||||
sodipodi:type="rect"
|
||||
d="m 25.000001,10.000001 h 10 a 15,15 45 0 1 15,15 v 10 a 15,15 135 0 1 -15,15 h -10 a 15,15 45 0 1 -15,-15 v -10 a 15,15 135 0 1 15,-15 z"
|
||||
inkscape:path-effect="#path-effect998"
|
||||
style="fill:#{{base04-hex}};fill-opacity:1" />
|
||||
id="svg_1"
|
||||
width="40"
|
||||
height="40"
|
||||
x="10.000001"
|
||||
y="10.000001"
|
||||
fill="#015ad7"
|
||||
stroke="#000000"
|
||||
stroke-width="0"
|
||||
rx="0"
|
||||
sodipodi:type="rect"
|
||||
d="m 25.000001,10.000001 h 10 a 15,15 45 0 1 15,15 v 10 a 15,15 135 0 1 -15,15 h -10 a 15,15 45 0 1 -15,-15 v -10 a 15,15 135 0 1 15,-15 z"
|
||||
inkscape:path-effect="#path-effect998"
|
||||
style="fill:#{{base04-hex}};fill-opacity:1" />
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.make-42 ];
|
||||
name = "Fcitx 5";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,124 +1,121 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="30"
|
||||
height="30"
|
||||
version="1.1"
|
||||
id="svg7"
|
||||
sodipodi:docname="panel.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
viewBox="0 0 60 60"
|
||||
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">
|
||||
<defs
|
||||
id="defs11">
|
||||
width="30"
|
||||
height="30"
|
||||
version="1.1"
|
||||
id="svg7"
|
||||
sodipodi:docname="panel.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
viewBox="0 0 60 60"
|
||||
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">
|
||||
<defs id="defs11">
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1"
|
||||
radius="9.5"
|
||||
unit="px"
|
||||
method="bezier"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1 @ F,0,0,1,0,19,0,1"
|
||||
radius="9.5"
|
||||
unit="px"
|
||||
method="bezier"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect475"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
radius="12"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect475"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
radius="12"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter480"
|
||||
x="-0.2"
|
||||
y="-0.2"
|
||||
width="1.4717949"
|
||||
height="1.4717949">
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter480"
|
||||
x="-0.2"
|
||||
y="-0.2"
|
||||
width="1.4717949"
|
||||
height="1.4717949">
|
||||
<feFlood
|
||||
flood-opacity="0.498039"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
id="feFlood470" />
|
||||
flood-opacity="0.498039"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
id="feFlood470" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite472" />
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite472" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3"
|
||||
result="blur"
|
||||
id="feGaussianBlur474" />
|
||||
in="composite1"
|
||||
stdDeviation="3"
|
||||
result="blur"
|
||||
id="feGaussianBlur474" />
|
||||
<feOffset
|
||||
dx="2.8"
|
||||
dy="2.8"
|
||||
result="offset"
|
||||
id="feOffset476" />
|
||||
dx="2.8"
|
||||
dy="2.8"
|
||||
result="offset"
|
||||
id="feOffset476" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite478" />
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite478" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="namedview9"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="5.9"
|
||||
inkscape:cx="-36.949153"
|
||||
inkscape:cy="20.254237"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g5" />
|
||||
<g
|
||||
id="g5">
|
||||
<title
|
||||
id="title2">Layer 1</title>
|
||||
id="namedview9"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="5.9"
|
||||
inkscape:cx="-36.949153"
|
||||
inkscape:cy="20.254237"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g5" />
|
||||
<g id="g5">
|
||||
<title id="title2">Layer 1</title>
|
||||
<path
|
||||
id="svg_1"
|
||||
width="39"
|
||||
height="39"
|
||||
x="10.5"
|
||||
y="10.5"
|
||||
fill="#f0f0f0"
|
||||
stroke="#adadad"
|
||||
rx="0"
|
||||
style="fill:#{{base00-hex}};fill-opacity:1;stroke:#{{base01-hex}};stroke-width:1.2;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter480)"
|
||||
inkscape:path-effect="#path-effect1"
|
||||
sodipodi:type="rect"
|
||||
d="m 29.5,10.5 h 1 c 10.49341,0 19,8.50659 19,19 v 1 c 0,10.49341 -8.50659,19 -19,19 h -1 c -10.49341,0 -19,-8.50659 -19,-19 v -1 c 0,-10.49341 8.50659,-19 19,-19 z" />
|
||||
id="svg_1"
|
||||
width="39"
|
||||
height="39"
|
||||
x="10.5"
|
||||
y="10.5"
|
||||
fill="#f0f0f0"
|
||||
stroke="#adadad"
|
||||
rx="0"
|
||||
style="fill:#{{base00-hex}};fill-opacity:1;stroke:#{{base01-hex}};stroke-width:1.2;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter480)"
|
||||
inkscape:path-effect="#path-effect1"
|
||||
sodipodi:type="rect"
|
||||
d="m 29.5,10.5 h 1 c 10.49341,0 19,8.50659 19,19 v 1 c 0,10.49341 -8.50659,19 -19,19 h -1 c -10.49341,0 -19,-8.50659 -19,-19 v -1 c 0,-10.49341 8.50659,-19 19,-19 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.4 KiB |
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "feh";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,8 @@ let
|
|||
g = colors."${color}-rgb-g";
|
||||
b = colors."${color}-rgb-b";
|
||||
};
|
||||
nur = config.stylix.inputs.nur.legacyPackages.${pkgs.system};
|
||||
nur =
|
||||
config.stylix.inputs.nur.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||
in
|
||||
{
|
||||
options.stylix.targets = lib.listToAttrs (
|
||||
|
|
@ -61,14 +62,9 @@ in
|
|||
default = [ ];
|
||||
};
|
||||
|
||||
colorTheme.enable = config.lib.stylix.mkEnableTarget ''
|
||||
[Firefox Color](https://color.firefox.com/) theme
|
||||
'' false;
|
||||
colorTheme.enable = lib.mkEnableOption "[Firefox Color](https://color.firefox.com/) on ${target.name}";
|
||||
|
||||
firefoxGnomeTheme.enable = config.lib.stylix.mkEnableTarget ''
|
||||
[Firefox GNOME
|
||||
theme](https://github.com/rafaelmardojai/firefox-gnome-theme)
|
||||
'' false;
|
||||
firefoxGnomeTheme.enable = lib.mkEnableOption "[Firefox GNOME theme](https://github.com/rafaelmardojai/firefox-gnome-theme) on ${target.name}";
|
||||
}
|
||||
) targets
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.danth ];
|
||||
maintainers = with lib.maintainers; [
|
||||
Flameopathic
|
||||
danth
|
||||
];
|
||||
|
||||
name = "Firefox and its derivatives";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "fish";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.awwpotato ];
|
||||
name = "Fnott";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,14 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.stylix.targets.foot;
|
||||
|
||||
theme = config.lib.stylix.colors {
|
||||
templateRepo = config.stylix.inputs.tinted-foot;
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
options.stylix.targets.foot.enable =
|
||||
config.lib.stylix.mkEnableTarget "Foot" true;
|
||||
|
||||
config.programs.foot.settings = lib.mkIf cfg.enable {
|
||||
config.programs.foot.settings = lib.mkIf config.stylix.targets.foot.enable {
|
||||
main = {
|
||||
include = theme;
|
||||
font =
|
||||
|
|
@ -20,6 +16,6 @@ in
|
|||
"${monospace.name}:size=${toString sizes.terminal}";
|
||||
dpi-aware = "no";
|
||||
};
|
||||
colors.alpha = with config.stylix.opacity; terminal;
|
||||
colors.alpha = config.stylix.opacity.terminal;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "foot";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Forge";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors;
|
||||
|
||||
let
|
||||
opacity = lib.toHexString (builtins.ceil (config.stylix.opacity.popups * 255));
|
||||
|
||||
in
|
||||
{
|
||||
options.stylix.targets.fuzzel.enable =
|
||||
|
|
@ -13,7 +9,7 @@ in
|
|||
config.programs.fuzzel.settings =
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.fuzzel.enable)
|
||||
{
|
||||
colors = {
|
||||
colors = with config.lib.stylix.colors; {
|
||||
background = "${base00-hex}${opacity}";
|
||||
text = "${base05-hex}ff";
|
||||
placeholder = "${base03-hex}ff";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Fuzzel";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "fzf";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "gedit";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,32 +26,32 @@
|
|||
themes.stylix =
|
||||
let
|
||||
inherit (config.lib.stylix) colors;
|
||||
inherit (config.lib.stylix.colors) withHashtag;
|
||||
in
|
||||
{
|
||||
palette = [
|
||||
"0=${withHashtag.base00}"
|
||||
"1=${withHashtag.base08}"
|
||||
"2=${withHashtag.base0B}"
|
||||
"3=${withHashtag.base0A}"
|
||||
"4=${withHashtag.base0D}"
|
||||
"5=${withHashtag.base0E}"
|
||||
"6=${withHashtag.base0C}"
|
||||
"7=${withHashtag.base05}"
|
||||
"8=${withHashtag.base03}"
|
||||
"9=${withHashtag.base08}"
|
||||
"10=${withHashtag.base0B}"
|
||||
"11=${withHashtag.base0A}"
|
||||
"12=${withHashtag.base0D}"
|
||||
"13=${withHashtag.base0E}"
|
||||
"14=${withHashtag.base0C}"
|
||||
"15=${withHashtag.base07}"
|
||||
];
|
||||
background = colors.base00;
|
||||
foreground = colors.base05;
|
||||
cursor-color = colors.base05;
|
||||
selection-background = colors.base02;
|
||||
selection-foreground = colors.base05;
|
||||
|
||||
palette = with colors.withHashtag; [
|
||||
"0=${base00}"
|
||||
"1=${base08}"
|
||||
"2=${base0B}"
|
||||
"3=${base0A}"
|
||||
"4=${base0D}"
|
||||
"5=${base0E}"
|
||||
"6=${base0C}"
|
||||
"7=${base05}"
|
||||
"8=${base03}"
|
||||
"9=${base08}"
|
||||
"10=${base0B}"
|
||||
"11=${base0A}"
|
||||
"12=${base0D}"
|
||||
"13=${base0E}"
|
||||
"14=${base0C}"
|
||||
"15=${base07}"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Ghostty";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "GitUI";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.louis-thevenet ];
|
||||
name = "Glance";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
style = config.lib.stylix.colors {
|
||||
template = ../gedit/template.xml.mustache;
|
||||
extension = "xml";
|
||||
};
|
||||
in
|
||||
{
|
||||
options.stylix.targets.gnome-text-editor.enable =
|
||||
config.lib.stylix.mkEnableTarget "GNOME Text Editor" true;
|
||||
|
||||
config =
|
||||
lib.mkIf
|
||||
(config.stylix.enable && config.stylix.targets.gnome-text-editor.enable)
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(_: prev: {
|
||||
gnome-text-editor = prev.gnome-text-editor.overrideAttrs (oldAttrs: {
|
||||
postFixup = ''
|
||||
${oldAttrs.postFixup or ""}
|
||||
cp ${style} $out/share/gnome-text-editor/styles/stylix.xml
|
||||
'';
|
||||
});
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./common.nix ];
|
||||
|
||||
config =
|
||||
lib.mkIf
|
||||
(config.stylix.enable && config.stylix.targets.gnome-text-editor.enable)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "GNOME Text Editor";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
imports = [ ./common.nix ];
|
||||
}
|
||||
24
modules/gnome-text-editor/overlay.nix
Normal file
24
modules/gnome-text-editor/overlay.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
style = config.lib.stylix.colors {
|
||||
template = ../gedit/template.xml.mustache;
|
||||
extension = "xml";
|
||||
};
|
||||
in
|
||||
{
|
||||
options.stylix.targets.gnome-text-editor.enable =
|
||||
config.lib.stylix.mkEnableTarget "GNOME Text Editor" true;
|
||||
|
||||
overlay =
|
||||
_: prev:
|
||||
lib.optionalAttrs
|
||||
(config.stylix.enable && config.stylix.targets.gnome-text-editor.enable)
|
||||
{
|
||||
gnome-text-editor = prev.gnome-text-editor.overrideAttrs (oldAttrs: {
|
||||
postFixup = ''
|
||||
${oldAttrs.postFixup or ""}
|
||||
cp ${style} $out/share/gnome-text-editor/styles/stylix.xml
|
||||
'';
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.danth ];
|
||||
name = "GNOME";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "GRUB";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,12 +5,10 @@
|
|||
...
|
||||
}:
|
||||
|
||||
with config.lib.stylix;
|
||||
with config.stylix.fonts;
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
|
||||
let
|
||||
cfg = config.stylix.targets.grub;
|
||||
inherit (config.stylix) imageScalingMode fonts;
|
||||
inherit (config.lib.stylix) mkEnableTarget mkEnableWallpaper pixel;
|
||||
# Grub requires fonts to be converted to "PFF2 format"
|
||||
# This function takes a font { name, package } and produces a .pf2 file
|
||||
mkGrubFont =
|
||||
|
|
@ -28,11 +26,9 @@ let
|
|||
)
|
||||
|
||||
# Convert to .pf2
|
||||
${pkgs.grub2}/bin/grub-mkfont $font --output $out --size ${toString sizes.applications}
|
||||
${pkgs.grub2}/bin/grub-mkfont $font --output $out --size ${toString fonts.sizes.applications}
|
||||
'';
|
||||
|
||||
inherit (config.stylix) imageScalingMode;
|
||||
|
||||
image-scale =
|
||||
if imageScalingMode == "fill" then
|
||||
"crop"
|
||||
|
|
@ -63,89 +59,91 @@ in
|
|||
})
|
||||
];
|
||||
options.stylix.targets.grub = {
|
||||
enable = config.lib.stylix.mkEnableTarget "GRUB" true;
|
||||
useWallpaper = config.lib.stylix.mkEnableWallpaper "GRUB" false;
|
||||
enable = mkEnableTarget "GRUB" true;
|
||||
useWallpaper = mkEnableWallpaper "GRUB" false;
|
||||
};
|
||||
|
||||
config.boot.loader.grub = lib.mkIf (config.stylix.enable && cfg.enable) {
|
||||
backgroundColor = base00;
|
||||
# Need to override the NixOS splash, this will match the background
|
||||
splashImage = pixel "base00";
|
||||
config.boot.loader.grub =
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
lib.mkIf (config.stylix.enable && cfg.enable) {
|
||||
backgroundColor = base00;
|
||||
# Need to override the NixOS splash, this will match the background
|
||||
splashImage = pixel "base00";
|
||||
|
||||
# This font will be used for the GRUB terminal
|
||||
font = toString (mkGrubFont monospace);
|
||||
# This font will be used for the GRUB terminal
|
||||
font = toString (mkGrubFont fonts.monospace);
|
||||
|
||||
# TODO: Include OS icons
|
||||
theme =
|
||||
pkgs.runCommand "stylix-grub"
|
||||
{
|
||||
themeTxt = ''
|
||||
desktop-image: "background.png"
|
||||
desktop-image-scale-method: "${image-scale}"
|
||||
desktop-color: "${base00}"
|
||||
# TODO: Include OS icons
|
||||
theme =
|
||||
pkgs.runCommand "stylix-grub"
|
||||
{
|
||||
themeTxt = ''
|
||||
desktop-image: "background.png"
|
||||
desktop-image-scale-method: "${image-scale}"
|
||||
desktop-color: "${base00}"
|
||||
|
||||
title-text: ""
|
||||
title-text: ""
|
||||
|
||||
terminal-left: "10%"
|
||||
terminal-top: "20%"
|
||||
terminal-width: "80%"
|
||||
terminal-height: "60%"
|
||||
terminal-left: "10%"
|
||||
terminal-top: "20%"
|
||||
terminal-width: "80%"
|
||||
terminal-height: "60%"
|
||||
|
||||
+ progress_bar {
|
||||
left = 25%
|
||||
top = 80%+20 # 20 pixels below boot menu
|
||||
width = 50%
|
||||
height = 30
|
||||
+ progress_bar {
|
||||
left = 25%
|
||||
top = 80%+20 # 20 pixels below boot menu
|
||||
width = 50%
|
||||
height = 30
|
||||
|
||||
id = "__timeout__"
|
||||
show_text = true
|
||||
font = "${sansSerif.name}"
|
||||
text = "@TIMEOUT_NOTIFICATION_MIDDLE@"
|
||||
id = "__timeout__"
|
||||
show_text = true
|
||||
font = "${fonts.sansSerif.name}"
|
||||
text = "@TIMEOUT_NOTIFICATION_MIDDLE@"
|
||||
|
||||
border_color = "${base00}"
|
||||
bg_color = "${base00}"
|
||||
fg_color = "${base0B}"
|
||||
text_color = "${base05}"
|
||||
}
|
||||
border_color = "${base00}"
|
||||
bg_color = "${base00}"
|
||||
fg_color = "${base0B}"
|
||||
text_color = "${base05}"
|
||||
}
|
||||
|
||||
+ boot_menu {
|
||||
left = 25%
|
||||
top = 20%
|
||||
width = 50%
|
||||
height = 60%
|
||||
menu_pixmap_style = "background_*.png"
|
||||
+ boot_menu {
|
||||
left = 25%
|
||||
top = 20%
|
||||
width = 50%
|
||||
height = 60%
|
||||
menu_pixmap_style = "background_*.png"
|
||||
|
||||
item_height = 40
|
||||
item_icon_space = 8
|
||||
item_spacing = 0
|
||||
item_padding = 0
|
||||
item_font = "${sansSerif.name}"
|
||||
item_color = "${base05}"
|
||||
item_height = 40
|
||||
item_icon_space = 8
|
||||
item_spacing = 0
|
||||
item_padding = 0
|
||||
item_font = "${fonts.sansSerif.name}"
|
||||
item_color = "${base05}"
|
||||
|
||||
selected_item_color = "${base01}"
|
||||
selected_item_pixmap_style = "selection_*.png"
|
||||
}
|
||||
'';
|
||||
passAsFile = [ "themeTxt" ];
|
||||
}
|
||||
''
|
||||
mkdir $out
|
||||
cp $themeTxtPath $out/theme.txt
|
||||
|
||||
${
|
||||
if
|
||||
cfg.useWallpaper
|
||||
# Make sure the background image is .png by asking to convert it
|
||||
then
|
||||
"${pkgs.imagemagick}/bin/convert ${config.stylix.image} png32:$out/background.png"
|
||||
else
|
||||
"cp ${pixel "base00"} $out/background.png"
|
||||
selected_item_color = "${base01}"
|
||||
selected_item_pixmap_style = "selection_*.png"
|
||||
}
|
||||
'';
|
||||
passAsFile = [ "themeTxt" ];
|
||||
}
|
||||
''
|
||||
mkdir $out
|
||||
cp $themeTxtPath $out/theme.txt
|
||||
|
||||
cp ${pixel "base01"} $out/background_c.png
|
||||
cp ${pixel "base0B"} $out/selection_c.png
|
||||
${
|
||||
if
|
||||
cfg.useWallpaper
|
||||
# Make sure the background image is .png by asking to convert it
|
||||
then
|
||||
"${pkgs.imagemagick}/bin/convert ${config.stylix.image} png32:$out/background.png"
|
||||
else
|
||||
"cp ${pixel "base00"} $out/background.png"
|
||||
}
|
||||
|
||||
cp ${mkGrubFont sansSerif} $out/sans_serif.pf2
|
||||
'';
|
||||
};
|
||||
cp ${pixel "base01"} $out/background_c.png
|
||||
cp ${pixel "base0B"} $out/selection_c.png
|
||||
|
||||
cp ${mkGrubFont fonts.sansSerif} $out/sans_serif.pf2
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.danth ];
|
||||
name = "GTK";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Halloy";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
## Base16 {{scheme-name}}
|
||||
# Author: {{scheme-author}}
|
||||
# Generated by Stylix
|
||||
# Copyright (c) 2024 Calvin Lee
|
||||
# Original template from https://github.com/4e554c4c/base16-halloy
|
||||
|
||||
[general]
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Helix";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
(lib.mkIf cfg.hyprpaper.enable {
|
||||
services.hyprpaper.enable = true;
|
||||
stylix.targets.hyprpaper.enable = true;
|
||||
wayland.windowManager.hyprland.settings.misc.disable_hyprland_logo = true;
|
||||
})
|
||||
]
|
||||
);
|
||||
|
|
|
|||
|
|
@ -4,4 +4,6 @@
|
|||
naho
|
||||
skoove
|
||||
];
|
||||
|
||||
name = "Hyprland";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,20 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix;
|
||||
|
||||
let
|
||||
cfg = config.stylix.targets.hyprlock;
|
||||
in
|
||||
{
|
||||
options.stylix.targets.hyprlock = {
|
||||
options.stylix.targets.hyprlock = with config.lib.stylix; {
|
||||
enable = mkEnableTarget "Hyprlock" true;
|
||||
useWallpaper = mkEnableWallpaper "Hyprlock" true;
|
||||
};
|
||||
|
||||
config = lib.mkIf (config.stylix.enable && cfg.enable) {
|
||||
programs.hyprlock.settings = {
|
||||
programs.hyprlock.settings = with config.lib.stylix.colors; {
|
||||
background = {
|
||||
color = "rgb(${colors.base00})";
|
||||
color = "rgb(${base00})";
|
||||
path = lib.mkIf cfg.useWallpaper "${config.stylix.image}";
|
||||
};
|
||||
input-field = with colors; {
|
||||
input-field = {
|
||||
outer_color = "rgb(${base03})";
|
||||
inner_color = "rgb(${base00})";
|
||||
font_color = "rgb(${base05})";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "hyprlock";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "hyprpaper";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
|
||||
let
|
||||
text = base05;
|
||||
urgent = base08;
|
||||
focused = base0D;
|
||||
unfocused = base03;
|
||||
|
||||
fonts =
|
||||
let
|
||||
inherit (config.stylix) fonts;
|
||||
|
|
@ -16,89 +8,96 @@ let
|
|||
names = [ fonts.sansSerif.name ];
|
||||
size = fonts.sizes.desktop * 1.0;
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
options.stylix.targets.i3.enable = config.lib.stylix.mkEnableTarget "i3" true;
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf config.stylix.targets.i3.enable {
|
||||
xsession.windowManager.i3.config = {
|
||||
inherit fonts;
|
||||
config =
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
let
|
||||
text = base05;
|
||||
urgent = base08;
|
||||
focused = base0D;
|
||||
unfocused = base03;
|
||||
in
|
||||
lib.mkMerge [
|
||||
(lib.mkIf config.stylix.targets.i3.enable {
|
||||
xsession.windowManager.i3.config = {
|
||||
inherit fonts;
|
||||
|
||||
colors =
|
||||
let
|
||||
background = base00;
|
||||
indicator = base0B;
|
||||
in
|
||||
{
|
||||
inherit background;
|
||||
urgent = {
|
||||
inherit background indicator text;
|
||||
border = urgent;
|
||||
childBorder = urgent;
|
||||
colors =
|
||||
let
|
||||
background = base00;
|
||||
indicator = base0B;
|
||||
in
|
||||
{
|
||||
inherit background;
|
||||
urgent = {
|
||||
inherit background indicator text;
|
||||
border = urgent;
|
||||
childBorder = urgent;
|
||||
};
|
||||
focused = {
|
||||
inherit background indicator text;
|
||||
border = focused;
|
||||
childBorder = focused;
|
||||
};
|
||||
focusedInactive = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
unfocused = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
placeholder = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
};
|
||||
focused = {
|
||||
inherit background indicator text;
|
||||
border = focused;
|
||||
childBorder = focused;
|
||||
};
|
||||
focusedInactive = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
unfocused = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
placeholder = {
|
||||
inherit background indicator text;
|
||||
border = unfocused;
|
||||
childBorder = unfocused;
|
||||
};
|
||||
};
|
||||
|
||||
# output."*".bg = "${config.stylix.image} fill";
|
||||
};
|
||||
})
|
||||
# output."*".bg = "${config.stylix.image} fill";
|
||||
};
|
||||
})
|
||||
|
||||
{
|
||||
# Merge this with your bar configuration using //config.lib.stylix.i3.bar
|
||||
lib.stylix.i3.bar = {
|
||||
inherit fonts;
|
||||
{
|
||||
# Merge this with your bar configuration using //config.lib.stylix.i3.bar
|
||||
lib.stylix.i3.bar = {
|
||||
inherit fonts;
|
||||
|
||||
colors =
|
||||
let
|
||||
background = base00;
|
||||
border = background;
|
||||
in
|
||||
{
|
||||
inherit background;
|
||||
statusline = text;
|
||||
separator = base03;
|
||||
focusedWorkspace = {
|
||||
inherit text background;
|
||||
border = focused;
|
||||
colors =
|
||||
let
|
||||
background = base00;
|
||||
border = background;
|
||||
in
|
||||
{
|
||||
inherit background;
|
||||
statusline = text;
|
||||
separator = base03;
|
||||
focusedWorkspace = {
|
||||
inherit text background;
|
||||
border = focused;
|
||||
};
|
||||
activeWorkspace = {
|
||||
inherit border background;
|
||||
text = focused;
|
||||
};
|
||||
inactiveWorkspace = {
|
||||
inherit text border background;
|
||||
};
|
||||
urgentWorkspace = {
|
||||
inherit text background;
|
||||
border = urgent;
|
||||
};
|
||||
bindingMode = {
|
||||
inherit text border;
|
||||
background = urgent;
|
||||
};
|
||||
};
|
||||
activeWorkspace = {
|
||||
inherit border background;
|
||||
text = focused;
|
||||
};
|
||||
inactiveWorkspace = {
|
||||
inherit text border background;
|
||||
};
|
||||
urgentWorkspace = {
|
||||
inherit text background;
|
||||
border = urgent;
|
||||
};
|
||||
bindingMode = {
|
||||
inherit text border;
|
||||
background = urgent;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "i3";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,19 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
in
|
||||
{ config, ... }:
|
||||
{
|
||||
# Merge this with your bar's theme's overrides with //config.lib.stylix.i3status-rust.bar
|
||||
config.lib.stylix.i3status-rust.bar = with colors; {
|
||||
idle_bg = base00;
|
||||
idle_fg = base05;
|
||||
info_bg = base09;
|
||||
info_fg = base00;
|
||||
good_bg = base01;
|
||||
good_fg = base05;
|
||||
warning_bg = base0A;
|
||||
warning_fg = base00;
|
||||
critical_bg = base08;
|
||||
critical_fg = base00;
|
||||
separator_bg = base00;
|
||||
separator_fg = base05;
|
||||
};
|
||||
config.lib.stylix.i3status-rust.bar =
|
||||
with config.lib.stylix.colors.withHashtag; {
|
||||
idle_bg = base00;
|
||||
idle_fg = base05;
|
||||
info_bg = base09;
|
||||
info_fg = base00;
|
||||
good_bg = base01;
|
||||
good_fg = base05;
|
||||
warning_bg = base0A;
|
||||
warning_fg = base00;
|
||||
critical_bg = base08;
|
||||
critical_fg = base00;
|
||||
separator_bg = base00;
|
||||
separator_fg = base05;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "i3status-rust";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,75 +1,76 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.stylix.targets.k9s.enable = config.lib.stylix.mkEnableTarget "k9s" true;
|
||||
|
||||
config = lib.mkIf config.stylix.targets.k9s.enable {
|
||||
config = lib.mkIf (config.stylix.enable && config.stylix.targets.k9s.enable) {
|
||||
programs.k9s.skins.skin = {
|
||||
k9s = {
|
||||
k9s = with config.lib.stylix.colors.withHashtag; {
|
||||
body = {
|
||||
fgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
logoColor = base0C-hex;
|
||||
logoColor = base0C;
|
||||
};
|
||||
|
||||
prompt = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = base00-hex;
|
||||
suggestColor = base0A-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
suggestColor = base02;
|
||||
};
|
||||
|
||||
info = {
|
||||
fgColor = base0B-hex;
|
||||
sectionColor = base05-hex;
|
||||
fgColor = base0B;
|
||||
sectionColor = base05;
|
||||
};
|
||||
|
||||
dialog = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = "default";
|
||||
buttonFgColor = base05-hex;
|
||||
buttonBgColor = base0C-hex;
|
||||
buttonFocusFgColor = base0E-hex;
|
||||
buttonFocusBgColor = base0B-hex;
|
||||
labelFgColor = base0A-hex;
|
||||
fieldFgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = base01;
|
||||
buttonFgColor = base05;
|
||||
buttonBgColor = base02;
|
||||
buttonFocusFgColor = base11;
|
||||
buttonFocusBgColor = base0B;
|
||||
labelFgColor = base0A;
|
||||
fieldFgColor = base05;
|
||||
};
|
||||
|
||||
frame = {
|
||||
border = {
|
||||
fgColor = base02-hex;
|
||||
focusColor = base01-hex;
|
||||
fgColor = base02;
|
||||
focusColor = base01;
|
||||
};
|
||||
|
||||
menu = {
|
||||
fgColor = base05-hex;
|
||||
keyColor = base0B-hex;
|
||||
numKeyColor = base0B-hex;
|
||||
fgColor = base05;
|
||||
keyColor = base0B;
|
||||
numKeyColor = base0B;
|
||||
};
|
||||
|
||||
crumbs = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = base01-hex;
|
||||
activeColor = base01-hex;
|
||||
fgColor = base05;
|
||||
bgColor = base01;
|
||||
activeColor = base02;
|
||||
};
|
||||
|
||||
status = {
|
||||
newColor = base08-hex;
|
||||
modifyColor = base0C-hex;
|
||||
addColor = base09-hex;
|
||||
errorColor = base0D-hex;
|
||||
highlightcolor = base0A-hex;
|
||||
killColor = base03-hex;
|
||||
completedColor = base03-hex;
|
||||
newColor = base0C;
|
||||
modifyColor = base09;
|
||||
addColor = base0B;
|
||||
errorColor = base08;
|
||||
highlightcolor = base0A;
|
||||
killColor = base03;
|
||||
completedColor = base03;
|
||||
};
|
||||
|
||||
title = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = base01-hex;
|
||||
highlightColor = base0A-hex;
|
||||
counterColor = base0C-hex;
|
||||
filterColor = base0B-hex;
|
||||
fgColor = base05;
|
||||
bgColor = base01;
|
||||
highlightColor = base0A;
|
||||
counterColor = base0C;
|
||||
filterColor = base0B;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -77,52 +78,54 @@ with config.lib.stylix.colors.withHashtag;
|
|||
charts = {
|
||||
bgColor = "default";
|
||||
defaultDialColors = [
|
||||
base0C-hex
|
||||
base0D-hex
|
||||
base0C
|
||||
base0D
|
||||
];
|
||||
defaultChartColors = [
|
||||
base0C-hex
|
||||
base0D-hex
|
||||
base0C
|
||||
base0D
|
||||
];
|
||||
};
|
||||
|
||||
table = {
|
||||
fgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
header = {
|
||||
fgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
sorterColor = base08-hex;
|
||||
sorterColor = base08;
|
||||
};
|
||||
};
|
||||
|
||||
xray = {
|
||||
fgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
cursorColor = base01-hex;
|
||||
graphicColor = base0C-hex;
|
||||
cursorColor = base01;
|
||||
graphicColor = base0C;
|
||||
showIcons = false;
|
||||
};
|
||||
|
||||
yaml = {
|
||||
keyColor = base0B-hex;
|
||||
colonColor = base0C-hex;
|
||||
valueColor = base05-hex;
|
||||
keyColor = base08;
|
||||
colonColor = base05;
|
||||
valueColor = base0B;
|
||||
};
|
||||
|
||||
logs = {
|
||||
fgColor = base05-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
indicator = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = base0C-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
toggleOnColor = base0B;
|
||||
toggleOffColor = base04;
|
||||
};
|
||||
};
|
||||
|
||||
help = {
|
||||
fgColor = base05-hex;
|
||||
bgColor = base00-hex;
|
||||
indicator.fgColor = base0D-hex;
|
||||
fgColor = base05;
|
||||
bgColor = "default";
|
||||
indicator.fgColor = base0D;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ ];
|
||||
maintainers = [ lib.maintainers.cluther ];
|
||||
name = "K9s";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@ in
|
|||
|
||||
# This activation entry will run the theme activator when the homeConfiguration is activated
|
||||
activation.stylixLookAndFeel = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
${activator} || verboseEcho \
|
||||
run ${activator} || verboseEcho \
|
||||
"Stylix KDE theme setting failed. This only works in a running Plasma session."
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "KDE";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,9 +27,7 @@ in
|
|||
inherit (config.stylix.fonts.monospace) package name;
|
||||
size = config.stylix.fonts.sizes.terminal;
|
||||
};
|
||||
settings.background_opacity =
|
||||
with config.stylix.opacity;
|
||||
"${builtins.toString terminal}";
|
||||
settings.background_opacity = "${builtins.toString config.stylix.opacity.terminal}";
|
||||
extraConfig = ''
|
||||
include ${theme}
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.naho ];
|
||||
name = "kitty";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
maintainers = [ ];
|
||||
name = "Kmscon";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,66 +7,66 @@
|
|||
programs.kubecolor.settings = {
|
||||
preset =
|
||||
if config.stylix.polarity == "either" then "" else "${config.stylix.polarity}";
|
||||
theme = {
|
||||
theme = with config.lib.stylix.colors.withHashtag; {
|
||||
base = {
|
||||
info = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
primary = "fg=${config.lib.stylix.colors.withHashtag.base0E-hex}";
|
||||
secondary = "fg=${config.lib.stylix.colors.withHashtag.base0D-hex}";
|
||||
success = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}:bold";
|
||||
warning = "fg=${config.lib.stylix.colors.withHashtag.base0A-hex}:bold";
|
||||
danger = "fg=${config.lib.stylix.colors.withHashtag.base08-hex}:bold";
|
||||
muted = "fg=${config.lib.stylix.colors.withHashtag.base04-hex}";
|
||||
key = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
info = "fg=${base05-hex}";
|
||||
primary = "fg=${base0E-hex}";
|
||||
secondary = "fg=${base0D-hex}";
|
||||
success = "fg=${base0B-hex}:bold";
|
||||
warning = "fg=${base0A-hex}:bold";
|
||||
danger = "fg=${base08-hex}:bold";
|
||||
muted = "fg=${base04-hex}";
|
||||
key = "fg=${base07-hex}:bold";
|
||||
};
|
||||
default = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
default = "fg=${base05-hex}";
|
||||
data = {
|
||||
key = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
string = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
true = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}:bold";
|
||||
false = "fg=${config.lib.stylix.colors.withHashtag.base08-hex}:bold";
|
||||
number = "fg=${config.lib.stylix.colors.withHashtag.base0E-hex}";
|
||||
null = "fg=${config.lib.stylix.colors.withHashtag.base04-hex}";
|
||||
quantity = "fg=${config.lib.stylix.colors.withHashtag.base0E-hex}";
|
||||
duration = "fg=${config.lib.stylix.colors.withHashtag.base09-hex}";
|
||||
durationfresh = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}";
|
||||
key = "fg=${base07-hex}:bold";
|
||||
string = "fg=${base05-hex}";
|
||||
true = "fg=${base0B-hex}:bold";
|
||||
false = "fg=${base08-hex}:bold";
|
||||
number = "fg=${base0E-hex}";
|
||||
null = "fg=${base04-hex}";
|
||||
quantity = "fg=${base0E-hex}";
|
||||
duration = "fg=${base09-hex}";
|
||||
durationfresh = "fg=${base0B-hex}";
|
||||
ratio = {
|
||||
zero = "fg=${config.lib.stylix.colors.withHashtag.base04-hex}";
|
||||
equal = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}";
|
||||
unequal = "fg=${config.lib.stylix.colors.withHashtag.base0A-hex}";
|
||||
zero = "fg=${base04-hex}";
|
||||
equal = "fg=${base0B-hex}";
|
||||
unequal = "fg=${base0A-hex}";
|
||||
};
|
||||
};
|
||||
status = {
|
||||
success = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}:bold";
|
||||
warning = "fg=${config.lib.stylix.colors.withHashtag.base0A-hex}:bold";
|
||||
error = "fg=${config.lib.stylix.colors.withHashtag.base08-hex}:bold";
|
||||
success = "fg=${base0B-hex}:bold";
|
||||
warning = "fg=${base0A-hex}:bold";
|
||||
error = "fg=${base08-hex}:bold";
|
||||
};
|
||||
table = {
|
||||
header = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}:bold";
|
||||
columns = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
header = "fg=${base05-hex}:bold";
|
||||
columns = "fg=${base05-hex}";
|
||||
};
|
||||
stderr = {
|
||||
default = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
error = "fg=${config.lib.stylix.colors.withHashtag.base08-hex}:bold";
|
||||
default = "fg=${base05-hex}";
|
||||
error = "fg=${base08-hex}:bold";
|
||||
};
|
||||
describe = {
|
||||
key = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
key = "fg=${base07-hex}:bold";
|
||||
};
|
||||
apply = {
|
||||
created = "fg=${config.lib.stylix.colors.withHashtag.base0B-hex}";
|
||||
configured = "fg=${config.lib.stylix.colors.withHashtag.base0A-hex}";
|
||||
unchanged = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
dryrun = "fg=${config.lib.stylix.colors.withHashtag.base0D-hex}";
|
||||
fallback = "fg=${config.lib.stylix.colors.withHashtag.base05-hex}";
|
||||
created = "fg=${base0B-hex}";
|
||||
configured = "fg=${base0A-hex}";
|
||||
unchanged = "fg=${base05-hex}";
|
||||
dryrun = "fg=${base0D-hex}";
|
||||
fallback = "fg=${base05-hex}";
|
||||
};
|
||||
explain = {
|
||||
key = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
required = "fg=${config.lib.stylix.colors.withHashtag.base00-hex}:bold";
|
||||
key = "fg=${base07-hex}:bold";
|
||||
required = "fg=${base00-hex}:bold";
|
||||
};
|
||||
options = {
|
||||
flag = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
flag = "fg=${base07-hex}:bold";
|
||||
};
|
||||
version = {
|
||||
key = "fg=${config.lib.stylix.colors.withHashtag.base07-hex}:bold";
|
||||
key = "fg=${base07-hex}:bold";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
maintainers = [ lib.maintainers.ajgon ];
|
||||
name = "Kubecolor";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@
|
|||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
in
|
||||
{
|
||||
options.stylix.targets.lazygit.enable =
|
||||
config.lib.stylix.mkEnableTarget "lazygit" true;
|
||||
|
|
@ -13,22 +10,23 @@ in
|
|||
config =
|
||||
lib.mkIf (config.stylix.enable && config.stylix.targets.lazygit.enable)
|
||||
{
|
||||
programs.lazygit.settings.gui.theme = {
|
||||
activeBorderColor = [
|
||||
colors.base07
|
||||
"bold"
|
||||
];
|
||||
inactiveBorderColor = [ colors.base04 ];
|
||||
searchingActiveBorderColor = [
|
||||
colors.base02
|
||||
"bold"
|
||||
];
|
||||
optionsTextColor = [ colors.base06 ];
|
||||
selectedLineBgColor = [ colors.base03 ];
|
||||
cherryPickedCommitBgColor = [ colors.base02 ];
|
||||
cherryPickedCommitFgColor = [ colors.base03 ];
|
||||
unstagedChangesColor = [ colors.base08 ];
|
||||
defaultFgColor = [ colors.base05 ];
|
||||
};
|
||||
programs.lazygit.settings.gui.theme =
|
||||
with config.lib.stylix.colors.withHashtag; {
|
||||
activeBorderColor = [
|
||||
base07
|
||||
"bold"
|
||||
];
|
||||
inactiveBorderColor = [ base04 ];
|
||||
searchingActiveBorderColor = [
|
||||
base02
|
||||
"bold"
|
||||
];
|
||||
optionsTextColor = [ base06 ];
|
||||
selectedLineBgColor = [ base03 ];
|
||||
cherryPickedCommitBgColor = [ base02 ];
|
||||
cherryPickedCommitFgColor = [ base03 ];
|
||||
unstagedChangesColor = [ base08 ];
|
||||
defaultFgColor = [ base05 ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue