mirror of
https://github.com/youwen5/liminalOS.git
synced 2025-08-04 03:28:30 -07:00
719 lines
21 KiB
Nix
719 lines
21 KiB
Nix
{
|
|
config,
|
|
osConfig,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.programs.tidal-hifi;
|
|
in
|
|
# TODO: add check for unfree: ++ lib.optionals osConfig.liminalOS.config.allowUnfree [ tidal-hifi ]
|
|
{
|
|
options.programs.tidal-hifi = {
|
|
enable = lib.mkEnableOption "tidal Hi-Fi client";
|
|
theme = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
default = null;
|
|
description = ''
|
|
Custom CSS to use as theme for Tidal HiFi.
|
|
'';
|
|
};
|
|
};
|
|
config = lib.mkIf pkgs.stdenv.targetPlatform.isx86_64 {
|
|
home.packages = lib.mkIf cfg.enable [ pkgs.tidal-hifi ];
|
|
xdg.configFile."tidal-hifi/themes/stylix.css".text = lib.mkIf (cfg.theme != null) cfg.theme;
|
|
|
|
programs.tidal-hifi =
|
|
lib.mkIf (config.liminalOS.programs.enable && osConfig.liminalOS.config.allowUnfree)
|
|
{
|
|
enable = true;
|
|
theme = with config.lib.stylix.colors.withHashtag; ''
|
|
/*
|
|
{
|
|
"name": "Tidal Light",
|
|
"author": "Interstellar_1",
|
|
"description": "A light theme for Tidal. v0.3.5b"
|
|
"license": "MIT License"
|
|
}
|
|
*/
|
|
:root {
|
|
/*background color*/
|
|
--wave-color-solid-base-fill: ${base00} !important;
|
|
--wave-color-solid-accent-darkest: ${base01} !important;
|
|
--wave-color-solid-base-brighter: ${base01} !important;
|
|
--wave-color-solid-base-bright: ${base01} !important;
|
|
--wave-color-opacity-base-bright-thick: ${base05} !important;
|
|
|
|
/*hover*/
|
|
--wave-color-solid-base-brightest: ${base03} !important;
|
|
--wave-color-opacity-base-brightest-regular: ${base01} !important;
|
|
--wave-color-opacity-contrast-fill-regular: ${base04} !important;
|
|
--wave-color-solid-contrast-dark: ${base03} !important;
|
|
--transparent-play-hover: #e1e1e166 !important;
|
|
|
|
/*border*/
|
|
--wave-color-opacity-contrast-fill-ultra-thin: ${base02} !important;
|
|
|
|
/*button color*/
|
|
--wave-color-opacity-contrast-fill-thin: ${base03} !important;
|
|
--wave-color-solid-accent-darker: ${base0C} !important;
|
|
--wave-color-solid-rainbow-red-darkest: ${base08} !important;
|
|
--wave-color-solid-rainbow-red-darker: ${base08} !important;
|
|
--button-light: ${base03} !important;
|
|
--button-medium: ${base04} !important;
|
|
|
|
/*accents*/
|
|
--wave-color-solid-accent-fill: ${base0E} !important;
|
|
--text-accent: ${base0E} !important;
|
|
[data-w="textUrl"] {
|
|
color: var(--text-accent) !important;
|
|
}
|
|
--switch-accent: ${base0E} !important;
|
|
--wave-color-solid-rainbow-yellow-fill: ${base0A} !important;
|
|
|
|
/*primary text*/
|
|
[data-wave-color="textDefault"] {
|
|
color: ${base05} !important;
|
|
}
|
|
[data-wave-color="textWhite"] {
|
|
color: ${base05} !important;
|
|
}
|
|
/*secondary text*/
|
|
--wave-color-text-secondary: ${base06} !important;
|
|
[data-wave-color="textSecondary"] {
|
|
color: ${base05}000b3 !important;
|
|
}
|
|
--wave-color-solid-contrast-darker: ${base06} !important;
|
|
--wave-color-opacity-contrast-fill-ultra-thick: ${base06} !important;
|
|
/*icons*/
|
|
--wave-color-solid-contrast-fill: ${base05} !important;
|
|
--wave-color-opacity-contrast-fill-thick: ${base05}0009a !important;
|
|
|
|
/*search*/
|
|
--wave-color-opacity-base-brighter-ultra-thick: ${base04} !important;
|
|
--search-background: ${base01}e0 !important;
|
|
|
|
/*user profile image*/
|
|
--user-profile-linear-gradient: linear-gradient(
|
|
160deg,
|
|
${base0B} 1.22%,
|
|
${base0D} 40.51%,
|
|
${base04} 79.07%
|
|
) !important;
|
|
}
|
|
|
|
body {
|
|
background-color: ${base00} !important;
|
|
}
|
|
/*GENERAL*/
|
|
/*hide right shadow*/
|
|
#playQueueSidebar {
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
/*buttons*/
|
|
._activeTab_f47dafa {
|
|
background: ${base03};
|
|
}
|
|
|
|
/*HOMEPAGE*/
|
|
/*artists*/
|
|
.isLoggedIn--CEJH_::after {
|
|
background: none;
|
|
}
|
|
|
|
/*hide album + playlist + mix bg*/
|
|
._dataContainer_66f4f40::before,
|
|
._dataContainer_5bb6028::before,
|
|
._dataContainer_7feb4a2::before {
|
|
background-image: none;
|
|
}
|
|
|
|
/*artist name*/
|
|
.css-5pl3ge {
|
|
color: ${base05}000ab;
|
|
}
|
|
|
|
/*icons*/
|
|
.icon--rmikT,
|
|
.icon--VV33E {
|
|
color: ${base05};
|
|
}
|
|
._icon_77f3f89 {
|
|
fill: ${base05} !important;
|
|
}
|
|
|
|
/*SIDEBAR*/
|
|
._active_3451dba:is(a._sidebarItem_730d27e, button._sidebarItem_730d27e) span {
|
|
color: var(--wave-color-solid-accent-fill) !important;
|
|
}
|
|
|
|
/*player shadow*/
|
|
.player--gAOQG.notFullscreen--xbpBL {
|
|
box-shadow: 0 -6px 24px ${base04}26;
|
|
}
|
|
|
|
/*ACCENT TEXT*/
|
|
/*yellow*/
|
|
._wave-badge-color-max_1oxl7_22 {
|
|
color: ${base0A};
|
|
background-color: ${base0A}38;
|
|
}
|
|
|
|
/*blue*/
|
|
._wave-badge-color-high_1oxl7_17 {
|
|
color: var(--text-accent);
|
|
}
|
|
|
|
.wave-text-title-bold {
|
|
color: ${base00} !important;
|
|
}
|
|
|
|
/*none*/
|
|
._wave-badge-color-default_1oxl7_7 {
|
|
background-color: ${base03};
|
|
color: ${base05};
|
|
}
|
|
|
|
svg._accentedIcon_d6d54e4 {
|
|
color: var(--wave-color-solid-accent-fill);
|
|
fill: var(--wave-color-solid-accent-fill) !important;
|
|
}
|
|
|
|
.smallHeader--rfQsR {
|
|
--img: url(https://blocks.astratic.com/img/general-img-landscape.png) !important;
|
|
}
|
|
|
|
/*shortcuts*/
|
|
._shortcutItem_6c8e7b4 {
|
|
box-shadow: none !important;
|
|
background-color: var(--wave-color-solid-base-brighter) !important;
|
|
}
|
|
|
|
._shortcutItem_6c8e7b4::after {
|
|
background: linear-gradient(${base05}0, ${base00}9);
|
|
}
|
|
|
|
/*search*/
|
|
.container--cl4MJ,
|
|
div.searchField--fgDKc,
|
|
div.searchField--fgDKc:focus,
|
|
._container_f1be359 {
|
|
background-color: var(--search-background) !important;
|
|
border-color: var(--wave-color-opacity-contrast-fill-ultra-thin) !important;
|
|
}
|
|
|
|
.container--sRPa5 {
|
|
border-color: var(--wave-color-opacity-contrast-fill-ultra-thin) !important;
|
|
}
|
|
|
|
.icon--nNXej,
|
|
._icon_49dd0aa {
|
|
background: linear-gradient(180deg, ${base00}, ${base03}) !important;
|
|
}
|
|
|
|
a.searchPill--ED7eQ.active--e_BIx {
|
|
background: var(--wave-color-opacity-contrast-fill-thin) !important;
|
|
}
|
|
|
|
.css-10jmp6g {
|
|
color: var(--wave-color-text-secondary) !important;
|
|
}
|
|
|
|
._imageContainer_dfdf7bd::after,
|
|
._imageContainer_23303c1::after {
|
|
background: var(--transparent-play-hover) !important;
|
|
}
|
|
|
|
/*updates*/
|
|
.css-5pl3ge {
|
|
color: ${base05}000ab !important;
|
|
}
|
|
|
|
/*explict badge*/
|
|
._explicitBadge_b93510b {
|
|
filter: invert(40%) brightness(110%) contrast(140%);
|
|
}
|
|
|
|
#explicit-badge {
|
|
color: ${base05} !important;
|
|
}
|
|
|
|
/*video badge*/
|
|
.videoBadge--Tpdav {
|
|
fill: var(--wave-color-text-secondary);
|
|
filter: brightness(0.3) invert(0);
|
|
}
|
|
|
|
/*canvas nav buttons*/
|
|
.viewAllButton--Nb87U,
|
|
.css-7l8ggf {
|
|
background: ${base03};
|
|
}
|
|
|
|
.viewAllButton--Nb87U:hover,
|
|
.css-7l8ggf:hover {
|
|
background: ${base04};
|
|
}
|
|
|
|
/*album hover*/
|
|
.overlay--ces1Z,
|
|
.overlay--Dn4ax,
|
|
.overlay--Cb6su,
|
|
.css-17bbmu3,
|
|
.css-ohr3gy,
|
|
._overlay_3c15650,
|
|
._overlay_aa1ee83,
|
|
._overlay_62e2cfd,
|
|
._overlay_e0e48ef,
|
|
._overlay_7fd73e6,
|
|
._overlay_f627136,
|
|
.css-1ug9uri,
|
|
.css-u7yq00 {
|
|
background: linear-gradient(${base05}0, ${base00}9e) !important;
|
|
}
|
|
|
|
:is(._dataContainer_66f4f40 ._coverArtContainer_2eafdf9)
|
|
._creditsOverlay_b234d8c {
|
|
background: ${base00}80;
|
|
}
|
|
|
|
/*artist hover*/
|
|
.css-179fhoi,
|
|
.css-fvlky0 {
|
|
background: linear-gradient(${base05}0, ${base00}9e) !important;
|
|
}
|
|
|
|
/*play button hover*/
|
|
.css-75d7zy {
|
|
background-color: ${base00}a6;
|
|
transition: 100ms;
|
|
}
|
|
|
|
.css-75d7zy:hover {
|
|
background-color: var(--wave-color-solid-base-brighter);
|
|
}
|
|
|
|
button.button--W_J5g.gray--tvcIF.contextMenuButton--Bcnyd:hover {
|
|
background-size: 200%;
|
|
}
|
|
|
|
/*playlist hover*/
|
|
.css-1voubjj:hover {
|
|
background-color: var(--wave-color-solid-base-brighter);
|
|
border: 5px var(--wave-color-opacity-contrast-fill-ultra-thin);
|
|
}
|
|
|
|
/*queue popup*/
|
|
.bottomGradient--BngZe,
|
|
._bottomGradient_104d99b {
|
|
background-image: none;
|
|
}
|
|
|
|
#playQueueSidebar {
|
|
box-shadow: 0 20px 25px 5px ${base00}57;
|
|
}
|
|
|
|
/*audio quality popup*/
|
|
._containerMax_611862e {
|
|
background-color: transparent;
|
|
}
|
|
|
|
/*PLAYER PANE*/
|
|
.range--JNSfg {
|
|
background-color: ${base04};
|
|
}
|
|
|
|
:is(._player_1d16b04 button).withBackground[aria-checked="true"] {
|
|
background-color: ${base02};
|
|
}
|
|
|
|
._range_ce0e571 {
|
|
background-color: var(--wave-color-opacity-contrast-fill-regular);
|
|
}
|
|
|
|
/*album hover*/
|
|
._notFullscreenOverlay_1442d60 {
|
|
background: linear-gradient(0deg, ${base00}a6, ${base00}a6);
|
|
}
|
|
|
|
/*FULL VIEW*/
|
|
.activeTab--bqTiv {
|
|
background: ${base02};
|
|
}
|
|
|
|
.container--cl4MJ {
|
|
background: ${base00}63 !important;
|
|
}
|
|
|
|
.css-u7yq00 {
|
|
background: ${base00}75;
|
|
}
|
|
|
|
._bottomGradient_5c344de {
|
|
background: none;
|
|
}
|
|
|
|
._button_84b8ffe {
|
|
background-color: var(--wave-color-solid-base-brighter);
|
|
}
|
|
|
|
._button_84b8ffe:hover {
|
|
background-color: var(--wave-color-solid-base-brightest);
|
|
}
|
|
|
|
._baseButton_15fc215:focus {
|
|
background: ${base03};
|
|
}
|
|
|
|
#nowPlaying {
|
|
background-image: none !important;
|
|
}
|
|
|
|
/*thumbnail*/
|
|
._albumImageOverlay_2eabc2b {
|
|
background: ${base00}4f;
|
|
}
|
|
|
|
/*ALBUM*/
|
|
.albumImage--i2CqD {
|
|
box-shadow:
|
|
0 20px 50px 5px ${base04}38,
|
|
0 20px 40px 0 ${base05}00024;
|
|
}
|
|
|
|
._button_f1c7fcb {
|
|
background: var(--wave-color-solid-base-brighter);
|
|
}
|
|
|
|
.artist-link {
|
|
color: ${base05};
|
|
}
|
|
|
|
/*remove bg image*/
|
|
[class^="_dataContainer_"]:before {
|
|
--img: none !important;
|
|
background-image: none !important;
|
|
}
|
|
|
|
/*playlist*/
|
|
.refreshButton--bRrPi {
|
|
color: ${base05};
|
|
}
|
|
|
|
/*tracks page*/
|
|
.variantPrimary--pjymy,
|
|
._button_3357ce6 {
|
|
background-color: var(--button-light);
|
|
}
|
|
|
|
.wave-text-body-demi {
|
|
color: ${base05};
|
|
}
|
|
|
|
/*track hover*/
|
|
._rowContainer_ebb4cfc:hover {
|
|
background: var(--wave-color-solid-base-brightest) !important;
|
|
}
|
|
|
|
/*DIALOUGES*/
|
|
.ReactModal__Content {
|
|
background: ${base01} !important;
|
|
}
|
|
|
|
.label--fycqD.unchecked--goEjz {
|
|
background-color: ${base04};
|
|
}
|
|
|
|
.label--fycqD.checked--RVmZV {
|
|
background-color: var(--switch-accent);
|
|
}
|
|
|
|
.primary--NLSX4 {
|
|
background-color: ${base03};
|
|
}
|
|
|
|
.primary--NLSX4:hover {
|
|
background-color: var(--wave-color-opacity-contrast-fill-regular) !important;
|
|
}
|
|
|
|
.primary--NLSX4:disabled {
|
|
background-color: ${base02};
|
|
}
|
|
|
|
.primary--NLSX4:disabled:hover {
|
|
background-color: ${base02};
|
|
}
|
|
|
|
/*popups*/
|
|
.notification--hckxF,
|
|
.native-range {
|
|
box-shadow: 0 20px 50px 5px ${base00}2e;
|
|
}
|
|
|
|
._notification_99c9c6e {
|
|
box-shadow: 0 16px 32px ${base05}0;
|
|
}
|
|
|
|
._notification_99c9c6e._error_0b778e5 {
|
|
background: var(--wave-color-solid-rainbow-red-darker);
|
|
}
|
|
|
|
.errorIcon--VvndK {
|
|
fill: ${base05} !important;
|
|
}
|
|
|
|
/*PROFILE*/
|
|
.followingTag--CKRME,
|
|
.wave-text-footnote-medium {
|
|
color: var(--text-accent) !important;
|
|
}
|
|
|
|
._wave-btn-rank-primary_1lao2_58:hover {
|
|
background-color: ${base0E};
|
|
}
|
|
|
|
._button_94c5125 {
|
|
background-color: transparent !important;
|
|
}
|
|
|
|
.profilePicture--yrdRB {
|
|
box-shadow: none;
|
|
}
|
|
|
|
._input_15c0d78:focus {
|
|
color: var(--wave-color-solid-contrast-darker);
|
|
}
|
|
|
|
/*my picks*/
|
|
#My\ favorite\ track\ on\ repeat,
|
|
._selectedPrompt_dac4cfc[style*="--prompt-base-color: ${base0D}1A"] {
|
|
--prompt-base-color: ${base0D} !important;
|
|
--prompt-color: ${base0E} !important;
|
|
}
|
|
|
|
#My\ major\ mood\ booster,
|
|
._selectedPrompt_dac4cfc[style*="--prompt-base-color: #FF91531A"] {
|
|
--prompt-base-color: ${base09} !important;
|
|
--prompt-color: ${base0A} !important;
|
|
}
|
|
|
|
#My\ go-to\ artist\ right\ now,
|
|
._selectedPrompt_dac4cfc[style*="--prompt-base-color: #FF53531A"] {
|
|
--prompt-base-color: ${base08} !important;
|
|
--prompt-color: ${base0F} !important;
|
|
}
|
|
|
|
#My\ top\ album\ recently,
|
|
._selectedPrompt_dac4cfc[style*="--prompt-base-color: #53FF981A"] {
|
|
--prompt-base-color: ${base0B} !important;
|
|
--prompt-color: ${base0B} !important;
|
|
}
|
|
|
|
._wave-btn-rank-clean_1lao2_127:hover {
|
|
color: ${base00};
|
|
background-color: ${base05}38 !important;
|
|
}
|
|
|
|
#pick-promt-item-search-field {
|
|
color: ${base05};
|
|
}
|
|
|
|
/*ARTIST PAGE*/
|
|
._background_4a10ea2:after {
|
|
content: "" !important;
|
|
position: absolute !important;
|
|
top: 0 !important;
|
|
left: 0 !important;
|
|
right: 0 !important;
|
|
bottom: 0 !important;
|
|
background-color: ${base00}4a !important;
|
|
}
|
|
|
|
:is(._background_a548b6d ._image_7ba9b97):before {
|
|
background-color: ${base00}21 !important;
|
|
background-image: none !important;
|
|
background-blend-mode: normal !important;
|
|
}
|
|
|
|
._background_a548b6d {
|
|
background-image: linear-gradient(180deg, ${base00}66 0, ${base00}) !important;
|
|
}
|
|
|
|
:is(._background_a548b6d ._image_7ba9b97):after {
|
|
background-image: var(--img) !important;
|
|
background-position: center !important;
|
|
background-repeat: no-repeat !important;
|
|
background-size: cover !important;
|
|
content: "" !important;
|
|
filter: blur(5px) brightness(30%) !important;
|
|
inset: -20px 0 !important;
|
|
mask-image: linear-gradient(0deg, ${base00}0 43%, ${base00}) !important;
|
|
position: absolute !important;
|
|
}
|
|
|
|
._mainImage_433f1ff:is(._background_a548b6d ._image_7ba9b97):after {
|
|
mask-image: linear-gradient(0deg, ${base00}0, ${base00}) !important;
|
|
filter: brightness(100%) !important;
|
|
height: 87% !important;
|
|
}
|
|
|
|
.buttonText--LMsAT {
|
|
color: ${base00} !important;
|
|
}
|
|
|
|
.css-10jmp6g {
|
|
color: ${base05};
|
|
}
|
|
|
|
.button--_0I_t {
|
|
background-color: var(--button-light);
|
|
}
|
|
|
|
.button--_0I_t:hover {
|
|
background-color: var(--wave-color-opacity-contrast-fill-regular);
|
|
}
|
|
|
|
#player__play {
|
|
color: ${base05};
|
|
}
|
|
|
|
.primary--NLSX4:hover {
|
|
background-color: ${base04};
|
|
}
|
|
|
|
:is(._buttons_ff12873 ._following_657edad) ._icon_29252d0 {
|
|
fill: var(--wave-color-solid-accent-fill) !important;
|
|
}
|
|
|
|
/*bio*/
|
|
._dialog_148b5df {
|
|
color: ${base05};
|
|
}
|
|
|
|
/*producer discography*/
|
|
.css-1thhtwd {
|
|
background: var(--wave-color-solid-base-brighter);
|
|
}
|
|
|
|
.css-1thhtwd:hover {
|
|
background: var(--wave-color-opacity-contrast-fill-regular);
|
|
}
|
|
|
|
._buttonActive_5125b72 {
|
|
background: var(--button-light);
|
|
}
|
|
|
|
._buttonActive_5125b72:hover {
|
|
background: var(--wave-color-opacity-contrast-fill-regular);
|
|
}
|
|
|
|
._buttonActive_5125b72 > .wave-text-body-medium {
|
|
color: ${base05};
|
|
}
|
|
/*SETTINGS*/
|
|
._container_b4f1e20._fillDark_a1e5896 > div,
|
|
._container_9a0abb9 {
|
|
background: ${base01} !important;
|
|
}
|
|
|
|
._select_ef84104 {
|
|
background: var(--wave-color-solid-accent-darker) !important;
|
|
}
|
|
|
|
.licenseFrame--C_hup {
|
|
background: ${base06};
|
|
}
|
|
|
|
svg#lastfm path {
|
|
fill: ${base05};
|
|
}
|
|
|
|
._button_94c5125 {
|
|
background: var(--wave-color-solid-base-brighter);
|
|
}
|
|
|
|
/*scrollbars*/
|
|
::-webkit-scrollbar {
|
|
background-color: transparent !important;
|
|
border: none !important;
|
|
width: 8px !important;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background-color: var(--wave-color-solid-base-brighter) !important;
|
|
box-shadow: none;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background-color: ${base04} !important;
|
|
border: none !important;
|
|
}
|
|
|
|
/*luna*/
|
|
body
|
|
> div.ReactModalPortal
|
|
> div
|
|
> div
|
|
> div.modalBody--TFBWU.selectableText--UDUkZ.modalText--gCapb.subtitle--dYfEG
|
|
> neptune-reactive-root
|
|
> div
|
|
> button,
|
|
#main
|
|
> div.__NEPTUNE_PAGE
|
|
> neptune-reactive-root
|
|
> div
|
|
> div
|
|
> div:nth-child(2)
|
|
> div
|
|
> div.neptune-card
|
|
> div
|
|
> div:nth-child(2)
|
|
> div:nth-child(1)
|
|
> button:nth-child(1),
|
|
#main
|
|
> div.__NEPTUNE_PAGE
|
|
> neptune-reactive-root
|
|
> div
|
|
> div
|
|
> div:nth-child(2)
|
|
> div
|
|
> div.neptune-card
|
|
> div
|
|
> div:nth-child(2)
|
|
> div:nth-child(1)
|
|
> button:nth-child(2) {
|
|
color: ${base05} !important;
|
|
}
|
|
|
|
.neptune-switch::after {
|
|
background-color: ${base00} !important;
|
|
}
|
|
|
|
.css-16hze37,
|
|
#main
|
|
> div:nth-child(3)
|
|
> div
|
|
> div.MuiContainer-root.MuiContainer-maxWidthLg.css-sot3eg
|
|
> div
|
|
> div:nth-child(2)
|
|
> div.MuiStack-root.css-16a8gxx
|
|
> div {
|
|
color: ${base07} !important;
|
|
}
|
|
|
|
.css-yc8597,
|
|
.css-pfqxe1,
|
|
.css-axw7ok {
|
|
color: ${base00} !important;
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
}
|