Jump to content

Spicetify-Nix: Difference between revisions

From NixOS Wiki
Layer-09 (talk | contribs)
Created page for spicetify-nix
 
Nyxar77 (talk | contribs)
m fixed the error for nix-darwin
 
(8 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<div style="border: 1px solid #295BC6; background: #DEE9FF; padding: 30px; border-radius: 5px; margin: 10px 0px; display: flex; align-items: center;">
<div style="border: 1px solid var(--color-progressive--hover); background: var(--background-color-progressive-subtle); padding: 30px; border-radius: 5px; margin: 10px 0px; display: flex; align-items: center;">
     <div style="color: #295BC6; font-size: 40px; margin-right: 15px; background: #DEE9FF; display: flex; line-height: 0; align-items: center;">❄</div>
     <div style="color: var(--color-progressive--hover); font-size: 40px; margin-right: 15px; background: var(--background-color-progressive-subtle); display: flex; line-height: 0; align-items: center;">❄</div>
     <div style="color: #295BC6; font-size: 15px; font-style: normal; font-weight: 400; line-height: normal; text-align: left;">This guide requires an understanding of flakes.</div>
     <div style="color: var(--color-progressive--hover); font-size: 15px; font-style: normal; font-weight: 400; line-height: normal; text-align: left;">This guide requires an understanding of [[Flakes|flakes]].</div>
</div>
</div>


<div style="border: 1px solid #6A0DAD; background: #F0E6FA; padding: 15px; border-radius: 5px; margin: 10px 0px; display: flex; justify-content: space-between; align-items: center;">
<div style="border: 1px solid var(--color-content-added); background: var(--background-color-success-subtle); padding: 15px; border-radius: 5px; margin: 10px 0px; display: flex; justify-content: space-between; align-items: center;">
<div style="color: #6A0DAD; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: left;">[https://spotify.com/ Spotify]</div>
<div style="color: var(--color-content-added); font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: left;">[https://spotify.com/ Spotify]</div>
<div style="color: #6A0DAD; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: center;">[https://wiki.nixos.org/wiki/Unfree_software#Using_unfree_packages/ License: Unfree]</div>
<div style="color: var(--color-content-added); font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: center;">[https://wiki.nixos.org/wiki/Unfree_software#Using_unfree_packages/ License: Unfree]</div>
<div style="color: #6A0DAD; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: right;">[https://www.spotify.com/legal/end-user-agreement/ Terms of Service]</div>
<div style="color: var(--color-content-added); font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; text-align: right;">[https://www.spotify.com/legal/end-user-agreement/ Terms of Service]</div>
</div>
</div>


[https://github.com/Gerg-L/spicetify-nix/ Spicetify-Nix] is a comprehensive repository designed to integrate Spicetify with the Nix package manager and NixOS. This repository offers a Nix package and NixOS module for Spicetify, simplifying the installation and configuration process on NixOS systems. It supports various themes, extensions, and customizations to improve the Spotify user experience. The NixOS module provides predefined options and parameters, ensuring a straightforward setup.  
[https://github.com/Gerg-L/spicetify-nix/ Spicetify-Nix] is a comprehensive repository designed to integrate Spicetify with the Nix package manager and NixOS. This repository offers a Nix package and NixOS module for Spicetify, simplifying the installation and configuration process on NixOS systems. It supports various themes, extensions, and customizations to improve the [[Spotify]] user experience. The NixOS module provides predefined options and parameters, ensuring a straightforward setup.  


== Installation ==  
== Installation ==  
Line 17: Line 17:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
spicetify-nix.inputs.nixpkgs.follows = "nixpkgs";
</syntaxhighlight>
</syntaxhighlight>


Line 27: Line 26:
   # For home-manager
   # For home-manager
   inputs.spicetify-nix.homeManagerModules.default
   inputs.spicetify-nix.homeManagerModules.default
  # For nix-darwin
  inputs.spicetify-nix.darwinModules.default
];
];
</syntaxhighlight>
</syntaxhighlight>
Line 32: Line 33:
== Configuration ==  
== Configuration ==  
==== Basic ====
==== Basic ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">programs.spicetify =
programs.spicetify =
let
let
   spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
   spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
in
{
{
   enable = true;
   enable = true;
   theme = spicePkgs.themes.catppuccin;
   theme = spicePkgs.themes.catppuccin;
}
}</syntaxhighlight>
</syntaxhighlight>


==== Advanced ====
==== Advanced ====
Line 47: Line 46:
programs.spicetify =
programs.spicetify =
let
let
   spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
   spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
in
{
{
Line 62: Line 61:
   ];
   ];
   enabledSnippets = with spicePkgs.snippets; [
   enabledSnippets = with spicePkgs.snippets; [
     rotating-coverart
     rotatingCoverart
     pointer
     pointer
   ];
   ];
Line 73: Line 72:
== Tips and Tricks ==
== Tips and Tricks ==
==== Location of Options ====
==== Location of Options ====
The options are found in the module: [https://github.com/Gerg-L/spicetify-nix/blob/master/module.nix module.nix].
The options are found in the [https://gerg-l.github.io/spicetify-nix/options.html rendered docs].


The extensions, customApps, and themes are found in the following files: [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/EXTENSIONS.md EXTENSIONS.md], [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/CUSTOMAPPS.md CUSTOMAPPS.md], [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/THEMES.md THEMES.md]
The extensions, customApps, and themes are found in the following files: [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/EXTENSIONS.md EXTENSIONS.md], [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/CUSTOMAPPS.md CUSTOMAPPS.md], [https://github.com/Gerg-L/spicetify-nix/blob/master/docs/THEMES.md THEMES.md].


==== Unpackaged Parameters ====
==== Unpackaged Parameters ====
Line 117: Line 116:
   overwriteAssets = false;
   overwriteAssets = false;
   additonalCss = "";
   additonalCss = "";
}
};
</syntaxhighlight>
</syntaxhighlight>


Line 126: Line 125:
# https://github.com/Gerg-L/spicetify-nix
# https://github.com/Gerg-L/spicetify-nix
# https://www.spotify.com/legal/end-user-agreement
# https://www.spotify.com/legal/end-user-agreement
# https://github.com/Gerg-L/spicetify-nix/blob/master/module.nix
# https://gerg-l.github.io/spicetify-nix/options.html
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/EXTENSIONS.md
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/EXTENSIONS.md
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/CUSTOMAPPS.md
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/CUSTOMAPPS.md
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/THEMES.md
# https://github.com/Gerg-L/spicetify-nix/blob/master/docs/THEMES.md
[[Category:Desktop]]

Latest revision as of 20:43, 14 August 2025

This guide requires an understanding of flakes.

Spicetify-Nix is a comprehensive repository designed to integrate Spicetify with the Nix package manager and NixOS. This repository offers a Nix package and NixOS module for Spicetify, simplifying the installation and configuration process on NixOS systems. It supports various themes, extensions, and customizations to improve the Spotify user experience. The NixOS module provides predefined options and parameters, ensuring a straightforward setup.

Installation

Using flakes

Include the following input in your flake.nix file.

spicetify-nix.url = "github:Gerg-L/spicetify-nix";

Afterwards, import the module depending on your use of global or home configuration.

imports = [
  # For NixOS
  inputs.spicetify-nix.nixosModules.default
  # For home-manager
  inputs.spicetify-nix.homeManagerModules.default
  # For nix-darwin
  inputs.spicetify-nix.darwinModules.default
];

Configuration

Basic

programs.spicetify =
let
  spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
{
  enable = true;
  theme = spicePkgs.themes.catppuccin;
}

Advanced

programs.spicetify =
let
  spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
{
  enable = true;

  enabledExtensions = with spicePkgs.extensions; [
    adblock
    hidePodcasts
    shuffle # shuffle+ (special characters are sanitized out of extension names)
  ];
  enabledCustomApps = with spicePkgs.apps; [
    newReleases
    ncsVisualizer
  ];
  enabledSnippets = with spicePkgs.snippets; [
    rotatingCoverart
    pointer
  ];

  theme = spicePkgs.themes.catppuccin;
  colorScheme = "mocha";
}

Tips and Tricks

Location of Options

The options are found in the rendered docs.

The extensions, customApps, and themes are found in the following files: EXTENSIONS.md, CUSTOMAPPS.md, THEMES.md.

Unpackaged Parameters

Below are instructions on how to package customApps that are not in the module by default.

programs.spicetify.enabledCustomApps= [
  ({
      # The source of the customApp
      src = pkgs.fetchFromGitHub {
        owner = "";
        repo = "";
        rev = "";
        hash = "";
      };
      # The actual file name of the customApp usually ends with .js
      name = "";
  })
];

Keep in mind that this can be applied to the other parameters as well. A custom theme allows for more options to be applied.

programs.spicetify.theme = {
  # Name of the theme
  name = "";
  # The source of the theme
  src = pkgs.fetchFromGitHub {
    owner = "";
    repo = "";
    rev = "";
    hash = "";
  };
  
  # Additional theme options all set to defaults
  # the docs of the theme should say which of these 
  # if any you have to change
  injectCss = true;
  injectThemeJs = true;
  replaceColors = true;
  sidebarConfig = true;
  homeConfig = true;
  overwriteAssets = false;
  additonalCss = "";
};

Troubleshooting

References

  1. https://spotify.com
  2. https://github.com/Gerg-L/spicetify-nix
  3. https://www.spotify.com/legal/end-user-agreement
  4. https://gerg-l.github.io/spicetify-nix/options.html
  5. https://github.com/Gerg-L/spicetify-nix/blob/master/docs/EXTENSIONS.md
  6. https://github.com/Gerg-L/spicetify-nix/blob/master/docs/CUSTOMAPPS.md
  7. https://github.com/Gerg-L/spicetify-nix/blob/master/docs/THEMES.md