aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-04-04 22:58:18 +0200
committerNatasha Moongrave <natasha@256phi.eu>2026-04-04 22:58:18 +0200
commitfe3717dd05f0c5ef97982e0ed7ba382009527094 (patch)
tree45957de588118cddcc6dfe14ca9670418b973ebb
parent6a283ccb2e220f3ffaa5b63f3fd4575a96fb9a9b (diff)
Add cassette-futurism KDE Plasma rice
- Created cassette futurism color palette with CRT aesthetic (hot pink, cyan, CRT green) - Added KDE Plasma 6 system configuration with Wayland support - Created Konsole color scheme and profile for retro terminal look - Added KDE-specific theme configuration via xdg config files - Configured Neovim with cassette futurism syntax highlighting - Rice uses SDDM display manager and KWin compositor with blur effects
-rw-r--r--home/rices/cassette-futurism/default.nix13
-rw-r--r--home/rices/cassette-futurism/nvim.nix58
-rw-r--r--home/rices/cassette-futurism/plasma.nix232
-rw-r--r--home/rices/cassette-futurism/system.nix57
-rw-r--r--home/rices/cassette-futurism/variables.nix59
5 files changed, 419 insertions, 0 deletions
diff --git a/home/rices/cassette-futurism/default.nix b/home/rices/cassette-futurism/default.nix
new file mode 100644
index 0000000..16c5e79
--- /dev/null
+++ b/home/rices/cassette-futurism/default.nix
@@ -0,0 +1,13 @@
+{pkgs, ...}: {
+ imports = [
+ ./plasma.nix
+ ./nvim.nix
+ ];
+
+ # Cassette futurism specific packages
+ home.packages = with pkgs; [
+ # Optional: cool-retro-term for authentic CRT terminal experience
+ # Uncomment if desired:
+ # cool-retro-term
+ ];
+}
diff --git a/home/rices/cassette-futurism/nvim.nix b/home/rices/cassette-futurism/nvim.nix
new file mode 100644
index 0000000..8e20790
--- /dev/null
+++ b/home/rices/cassette-futurism/nvim.nix
@@ -0,0 +1,58 @@
+{pkgs, ...}: let
+ vars = import ./variables.nix;
+in {
+ programs.neovim = {
+ enable = true;
+ defaultEditor = true;
+ viAlias = true;
+ vimAlias = true;
+
+ extraLuaConfig = ''
+ -- Cassette Futurism Neovim theme
+ vim.cmd([[
+ highlight Normal guibg=${vars.colors.background} guifg=${vars.colors.foreground}
+ highlight NormalFloat guibg=${vars.colors.backgroundAlt} guifg=${vars.colors.foreground}
+ highlight Comment guifg=${vars.colors.gray4} gui=italic
+ highlight Constant guifg=${vars.colors.orange}
+ highlight String guifg=${vars.colors.success}
+ highlight Character guifg=${vars.colors.success}
+ highlight Number guifg=${vars.colors.orange}
+ highlight Boolean guifg=${vars.colors.hotPink}
+ highlight Float guifg=${vars.colors.orange}
+ highlight Identifier guifg=${vars.colors.cyan}
+ highlight Function guifg=${vars.colors.purple}
+ highlight Statement guifg=${vars.colors.magenta}
+ highlight Keyword guifg=${vars.colors.magenta}
+ highlight Operator guifg=${vars.colors.cyan}
+ highlight PreProc guifg=${vars.colors.hotPink}
+ highlight Type guifg=${vars.colors.yellow}
+ highlight Special guifg=${vars.colors.cyan}
+ highlight Underlined guifg=${vars.colors.purple} gui=underline
+ highlight Error guibg=${vars.colors.error} guifg=${vars.colors.background}
+ highlight Todo guibg=${vars.colors.yellow} guifg=${vars.colors.background}
+ highlight LineNr guifg=${vars.colors.gray4}
+ highlight CursorLineNr guifg=${vars.colors.hotPink}
+ highlight Visual guibg=${vars.colors.gray2}
+ highlight Search guibg=${vars.colors.purple} guifg=${vars.colors.background}
+ highlight IncSearch guibg=${vars.colors.hotPink} guifg=${vars.colors.background}
+ highlight StatusLine guibg=${vars.colors.backgroundAlt} guifg=${vars.colors.cyan}
+ highlight StatusLineNC guibg=${vars.colors.backgroundAlt} guifg=${vars.colors.gray4}
+ highlight VertSplit guibg=${vars.colors.background} guifg=${vars.colors.gray3}
+ highlight Pmenu guibg=${vars.colors.backgroundAlt} guifg=${vars.colors.foreground}
+ highlight PmenuSel guibg=${vars.colors.hotPink} guifg=${vars.colors.background}
+ highlight PmenuSbar guibg=${vars.colors.gray2}
+ highlight PmenuThumb guibg=${vars.colors.gray4}
+ ]])
+
+ -- Basic settings
+ vim.opt.number = true
+ vim.opt.relativenumber = true
+ vim.opt.expandtab = true
+ vim.opt.shiftwidth = 2
+ vim.opt.tabstop = 2
+ vim.opt.smartindent = true
+ vim.opt.termguicolors = true
+ vim.opt.cursorline = true
+ '';
+ };
+}
diff --git a/home/rices/cassette-futurism/plasma.nix b/home/rices/cassette-futurism/plasma.nix
new file mode 100644
index 0000000..ed685c1
--- /dev/null
+++ b/home/rices/cassette-futurism/plasma.nix
@@ -0,0 +1,232 @@
+{
+ config,
+ pkgs,
+ ...
+}: let
+ vars = import ./variables.nix;
+in {
+ # KDE Plasma configuration via xdg config files
+ # This provides basic theming until plasma-manager is available
+
+ xdg.configFile = {
+ # Plasma color scheme - cassette futurism
+ "kdeglobals".text = ''
+ [ColorEffects:Disabled]
+ Color=${vars.colors.gray3}
+ ColorAmount=0
+ ColorEffect=0
+ ContrastAmount=0.65
+ ContrastEffect=1
+ IntensityAmount=0.1
+ IntensityEffect=2
+
+ [ColorEffects:Inactive]
+ ChangeSelectionColor=true
+ Color=${vars.colors.gray4}
+ ColorAmount=0.025
+ ColorEffect=2
+ ContrastAmount=0.1
+ ContrastEffect=2
+ Enable=false
+ IntensityAmount=0
+ IntensityEffect=0
+
+ [Colors:Button]
+ BackgroundAlternate=${vars.colors.backgroundAlt}
+ BackgroundNormal=${vars.colors.background}
+ DecorationFocus=${vars.colors.hotPink}
+ DecorationHover=${vars.colors.cyan}
+ ForegroundActive=${vars.colors.cyan}
+ ForegroundInactive=${vars.colors.gray4}
+ ForegroundLink=${vars.colors.purple}
+ ForegroundNegative=${vars.colors.error}
+ ForegroundNeutral=${vars.colors.warning}
+ ForegroundNormal=${vars.colors.foreground}
+ ForegroundPositive=${vars.colors.success}
+ ForegroundVisited=${vars.colors.magenta}
+
+ [Colors:Selection]
+ BackgroundAlternate=${vars.colors.purple}
+ BackgroundNormal=${vars.colors.hotPink}
+ DecorationFocus=${vars.colors.cyan}
+ DecorationHover=${vars.colors.magenta}
+ ForegroundActive=${vars.colors.background}
+ ForegroundInactive=${vars.colors.gray2}
+ ForegroundLink=${vars.colors.cyan}
+ ForegroundNegative=${vars.colors.error}
+ ForegroundNeutral=${vars.colors.warning}
+ ForegroundNormal=${vars.colors.background}
+ ForegroundPositive=${vars.colors.success}
+ ForegroundVisited=${vars.colors.purple}
+
+ [Colors:Tooltip]
+ BackgroundAlternate=${vars.colors.backgroundAlt}
+ BackgroundNormal=${vars.colors.gray2}
+ DecorationFocus=${vars.colors.hotPink}
+ DecorationHover=${vars.colors.cyan}
+ ForegroundActive=${vars.colors.cyan}
+ ForegroundInactive=${vars.colors.gray4}
+ ForegroundLink=${vars.colors.purple}
+ ForegroundNegative=${vars.colors.error}
+ ForegroundNeutral=${vars.colors.warning}
+ ForegroundNormal=${vars.colors.foreground}
+ ForegroundPositive=${vars.colors.success}
+ ForegroundVisited=${vars.colors.magenta}
+
+ [Colors:View]
+ BackgroundAlternate=${vars.colors.backgroundAlt}
+ BackgroundNormal=${vars.colors.background}
+ DecorationFocus=${vars.colors.hotPink}
+ DecorationHover=${vars.colors.cyan}
+ ForegroundActive=${vars.colors.cyan}
+ ForegroundInactive=${vars.colors.gray4}
+ ForegroundLink=${vars.colors.purple}
+ ForegroundNegative=${vars.colors.error}
+ ForegroundNeutral=${vars.colors.warning}
+ ForegroundNormal=${vars.colors.foreground}
+ ForegroundPositive=${vars.colors.success}
+ ForegroundVisited=${vars.colors.magenta}
+
+ [Colors:Window]
+ BackgroundAlternate=${vars.colors.backgroundAlt}
+ BackgroundNormal=${vars.colors.background}
+ DecorationFocus=${vars.colors.hotPink}
+ DecorationHover=${vars.colors.cyan}
+ ForegroundActive=${vars.colors.cyan}
+ ForegroundInactive=${vars.colors.gray4}
+ ForegroundLink=${vars.colors.purple}
+ ForegroundNegative=${vars.colors.error}
+ ForegroundNeutral=${vars.colors.warning}
+ ForegroundNormal=${vars.colors.foreground}
+ ForegroundPositive=${vars.colors.success}
+ ForegroundVisited=${vars.colors.magenta}
+
+ [General]
+ ColorScheme=CassetteFuturism
+ Name=Cassette Futurism
+ shadeSortColumn=true
+
+ [KDE]
+ contrast=4
+
+ [WM]
+ activeBackground=${vars.colors.background}
+ activeBlend=${vars.colors.foreground}
+ activeForeground=${vars.colors.foreground}
+ inactiveBackground=${vars.colors.backgroundAlt}
+ inactiveBlend=${vars.colors.gray3}
+ inactiveForeground=${vars.colors.gray4}
+ '';
+
+ # KWin effects - enable blur and translucency for that retro-futuristic look
+ "kwinrc".text = ''
+ [Compositing]
+ OpenGLIsUnsafe=false
+ Backend=OpenGL
+
+ [Effect-Blur]
+ BlurStrength=8
+
+ [Effect-translucency]
+ Inactive=90
+ MoveResize=80
+
+ [Plugins]
+ blurEnabled=true
+ contrastEnabled=true
+ kwin4_effect_translucencyEnabled=true
+ slideEnabled=true
+ zoomEnabled=false
+ '';
+
+ # Konsole color scheme
+ "konsole/CassetteFuturism.colorscheme".text = ''
+ [Background]
+ Color=${vars.colors.background}
+
+ [BackgroundIntense]
+ Color=${vars.colors.backgroundAlt}
+
+ [Foreground]
+ Color=${vars.colors.foreground}
+
+ [ForegroundIntense]
+ Color=${vars.colors.cyan}
+
+ [Color0]
+ Color=${vars.colors.gray0}
+
+ [Color0Intense]
+ Color=${vars.colors.gray3}
+
+ [Color1]
+ Color=${vars.colors.error}
+
+ [Color1Intense]
+ Color=${vars.colors.hotPink}
+
+ [Color2]
+ Color=${vars.colors.success}
+
+ [Color2Intense]
+ Color=${vars.colors.foreground}
+
+ [Color3]
+ Color=${vars.colors.warning}
+
+ [Color3Intense]
+ Color=${vars.colors.yellow}
+
+ [Color4]
+ Color=${vars.colors.purple}
+
+ [Color4Intense]
+ Color=${vars.colors.magenta}
+
+ [Color5]
+ Color=${vars.colors.magenta}
+
+ [Color5Intense]
+ Color=${vars.colors.hotPink}
+
+ [Color6]
+ Color=${vars.colors.cyan}
+
+ [Color6Intense]
+ Color=${vars.colors.info}
+
+ [Color7]
+ Color=${vars.colors.gray5}
+
+ [Color7Intense]
+ Color=#FFFFFF
+
+ [General]
+ Description=Cassette Futurism
+ Opacity=0.95
+ Wallpaper=
+ '';
+
+ # Konsole profile
+ "konsole/CassetteFuturism.profile".text = ''
+ [Appearance]
+ ColorScheme=CassetteFuturism
+ Font=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
+
+ [General]
+ Name=Cassette Futurism
+ Parent=FALLBACK/
+ '';
+ };
+
+ # Set default Konsole profile
+ home.file.".local/share/konsole/CassetteFuturism.profile".text = ''
+ [Appearance]
+ ColorScheme=CassetteFuturism
+ Font=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
+
+ [General]
+ Name=Cassette Futurism
+ Parent=FALLBACK/
+ '';
+}
diff --git a/home/rices/cassette-futurism/system.nix b/home/rices/cassette-futurism/system.nix
new file mode 100644
index 0000000..4a5baef
--- /dev/null
+++ b/home/rices/cassette-futurism/system.nix
@@ -0,0 +1,57 @@
+{pkgs, ...}: let
+ vars = import ./variables.nix;
+in {
+ # Cassette futurism rice uses KDE Plasma 6
+ rice.desktop = {
+ environment = "plasma";
+ wayland.enable = true; # KDE Plasma 6 works best with Wayland
+ compositor.enable = false; # KDE has its own compositor (KWin)
+ };
+
+ # Cassette futurism uses custom retro colors
+ rice.stylix = {
+ overrideColors = true;
+ base16Scheme = vars.base16;
+
+ # Try user wallpaper, fallback to NixOS mosaic
+ wallpaper =
+ if builtins.pathExists vars.wallpaper
+ then vars.wallpaper
+ else pkgs.fetchurl {
+ url = vars.wallpaperFallback;
+ sha256 = "sha256-zVW0KZ26u2bjEMCf/hI/0FftCge+2hHLWbx/ijKSZ6U=";
+ };
+
+ # Retro fonts - VT323 for that authentic terminal look
+ fonts = {
+ monospace = {
+ # Try to use VT323 if available, otherwise fallback to JetBrains Mono
+ package = pkgs.nerd-fonts.jetbrains-mono;
+ name = "JetBrainsMono Nerd Font";
+ };
+ sansSerif = {
+ package = pkgs.noto-fonts;
+ name = "Noto Sans";
+ };
+ serif = {
+ package = pkgs.noto-fonts;
+ name = "Noto Serif";
+ };
+ emoji = {
+ package = pkgs.noto-fonts-color-emoji;
+ name = "Noto Color Emoji";
+ };
+ sizes = {
+ terminal = 11;
+ applications = 11;
+ desktop = 11;
+ };
+ };
+ };
+
+ # Additional KDE packages for cassette futurism aesthetic
+ environment.systemPackages = with pkgs; [
+ # Retro terminal emulator (optional cool-retro-term for authentic CRT look)
+ # cool-retro-term
+ ];
+}
diff --git a/home/rices/cassette-futurism/variables.nix b/home/rices/cassette-futurism/variables.nix
new file mode 100644
index 0000000..421ecc2
--- /dev/null
+++ b/home/rices/cassette-futurism/variables.nix
@@ -0,0 +1,59 @@
+{
+ # Cassette Futurism Color Palette
+ # Inspired by 1970s-80s tech aesthetic: CRT displays, cassette tapes, VCRs
+ # Dark background with hot retro accent colors
+
+ colors = {
+ # Base colors - CRT display aesthetic
+ background = "#0F0F0F"; # Near-black CRT screen
+ backgroundAlt = "#1A1A1A"; # Slightly lighter for contrast
+ foreground = "#00FF00"; # Classic CRT green phosphor
+ foregroundAlt = "#FFAA00"; # CRT amber phosphor (alternative)
+
+ # Accent colors - Hot retro palette
+ hotPink = "#FF006E"; # Cassette label pink
+ cyan = "#00FFFF"; # Bright cyan (retro terminal)
+ purple = "#9D4EDD"; # Deep retro purple
+ magenta = "#FF00FF"; # Hot magenta
+ orange = "#FF8500"; # Cassette tape orange
+ yellow = "#FFD60A"; # Warning yellow
+
+ # Functional colors
+ success = "#00FF00"; # CRT green
+ warning = "#FFAA00"; # Amber
+ error = "#FF006E"; # Hot pink
+ info = "#00FFFF"; # Cyan
+
+ # UI grays
+ gray0 = "#0F0F0F";
+ gray1 = "#1A1A1A";
+ gray2 = "#2A2A2A";
+ gray3 = "#3A3A3A";
+ gray4 = "#4A4A4A";
+ gray5 = "#5A5A5A";
+ };
+
+ # Base16 mapping for Stylix
+ base16 = {
+ base00 = "0F0F0F"; # background
+ base01 = "1A1A1A"; # lighter background
+ base02 = "2A2A2A"; # selection background
+ base03 = "3A3A3A"; # comments
+ base04 = "00FF00"; # CRT green
+ base05 = "00FFFF"; # cyan foreground
+ base06 = "FF006E"; # hot pink
+ base07 = "FFFFFF"; # bright white
+ base08 = "FF006E"; # hot pink (variables)
+ base09 = "FF8500"; # orange (constants)
+ base0A = "FFD60A"; # yellow (classes)
+ base0B = "00FF00"; # green (strings)
+ base0C = "00FFFF"; # cyan (support)
+ base0D = "9D4EDD"; # purple (functions)
+ base0E = "FF00FF"; # magenta (keywords)
+ base0F = "FFAA00"; # amber (deprecated)
+ };
+
+ # Wallpaper path (user should replace with cassette-themed image)
+ wallpaper = "/home/mun/.config/wallpapers/cassette-futurism.png";
+ wallpaperFallback = "https://raw.githubusercontent.com/NixOS/nixos-artwork/master/wallpapers/nix-wallpaper-mosaic-blue.png";
+}