diff options
| author | Natasha Moongrave <natasha@256phi.eu> | 2026-04-04 22:58:18 +0200 |
|---|---|---|
| committer | Natasha Moongrave <natasha@256phi.eu> | 2026-04-04 22:58:18 +0200 |
| commit | fe3717dd05f0c5ef97982e0ed7ba382009527094 (patch) | |
| tree | 45957de588118cddcc6dfe14ca9670418b973ebb | |
| parent | 6a283ccb2e220f3ffaa5b63f3fd4575a96fb9a9b (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.nix | 13 | ||||
| -rw-r--r-- | home/rices/cassette-futurism/nvim.nix | 58 | ||||
| -rw-r--r-- | home/rices/cassette-futurism/plasma.nix | 232 | ||||
| -rw-r--r-- | home/rices/cassette-futurism/system.nix | 57 | ||||
| -rw-r--r-- | home/rices/cassette-futurism/variables.nix | 59 |
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"; +} |
