From 3a90b4b3f6c4ad28235dcec8933bedfa24231b6d Mon Sep 17 00:00:00 2001 From: fwastring Date: Sun, 7 Sep 2025 20:26:24 +0200 Subject: [PATCH] Refactoring --- Justfile | 66 ++++ maskiner/desktop/configuration.nix | 83 +---- moduler/base.nix | 13 - moduler/hyprland.nix | 3 +- moduler/k3s.nix | 47 ++- moduler/network.nix | 13 +- moduler/sound.nix | 1 + moduler/system.nix | 187 ++++++----- moduler/waybar.nix | 490 ++++++++++++++--------------- 9 files changed, 475 insertions(+), 428 deletions(-) create mode 100644 Justfile diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..db4b1bf --- /dev/null +++ b/Justfile @@ -0,0 +1,66 @@ +# just is a command runner, Justfile is very similar to Makefile, but simpler. + +############################################################################ +# +# Nix commands related to the local machine +# +############################################################################ + +deploy: + nixos-rebuild switch --flake . --use-remote-sudo + +debug: + nixos-rebuild switch --flake . --use-remote-sudo --show-trace --verbose + +up: + nix flake update + +# Update specific input +# usage: make upp i=home-manager +upp: + nix flake update $(i) + +history: + nix profile history --profile /nix/var/nix/profiles/system + +repl: + nix repl -f flake:nixpkgs + +clean: + # remove all generations older than 7 days + sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d + +gc: + # garbage collect all unused nix store entries + sudo nix-collect-garbage --delete-old + +############################################################################ +# +# Idols, Commands related to my remote distributed building cluster +# +############################################################################ + +add-idols-ssh-key: + ssh-add ~/.ssh/ai-idols + +aqua: add-idols-ssh-key + nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo + +aqua-debug: add-idols-ssh-key + nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo --show-trace --verbose + +ruby: add-idols-ssh-key + nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo + +ruby-debug: add-idols-ssh-key + nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo --show-trace --verbose + +kana: add-idols-ssh-key + nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo + +kana-debug: add-idols-ssh-key + nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo --show-trace --verbose + +idols: aqua ruby kana + +idols-debug: aqua-debug ruby-debug kana-debug diff --git a/maskiner/desktop/configuration.nix b/maskiner/desktop/configuration.nix index ab78280..6287cb4 100644 --- a/maskiner/desktop/configuration.nix +++ b/maskiner/desktop/configuration.nix @@ -7,89 +7,22 @@ pkgs, myhostname, ... -}: { +}: +{ # You can import other NixOS modules here imports = [ ./hardware-configuration.nix - ../../moduler/base.nix - ../../moduler/users.nix - ../../moduler/nginx.nix + ../../moduler/base.nix + ../../moduler/users.nix + ../../moduler/nginx.nix + ../../moduler/k3s.nix ]; - environment.systemPackages = with pkgs; [ - unstable.lego - ]; -networking.firewall = { - enable = true; - allowedTCPPorts = [ 8384 22000]; - allowedUDPPortRanges = [ - { from = 4000; to = 4007; } - { from = 8000; to = 8010; } + environment.systemPackages = with pkgs; [ + unstable.lego ]; -}; - -services.k3s = { - enable = true; - role = "server"; - token = "supersupersecretkey"; - extraFlags = toString ([ - "--write-kubeconfig-mode \"0644\"" - "--cluster-init" - "--disable local-storage" - "--disable traefik" - ]); - clusterInit = true; - }; - - services.openiscsi = { - enable = true; - name = "iqn.2016-04.com.open-iscsi:desktop"; - }; - - networking.firewall.allowedUDPPorts = [ 22000 21027 ]; - - services = { - openssh = { - enable = true; - # ports = [55502]; - settings = { - PermitRootLogin = "no"; - PasswordAuthentication = false; - X11Forwarding = true; - }; - extraConfig = '' - AllowUsers fw ios jw - ''; - }; - syncthing = { - enable = true; - user = "fw"; - dataDir = "/home/fw/syncthing"; - configDir = "/home/fw/.config/syncthing"; - overrideDevices = true; # overrides any devices added or deleted through the WebUI - overrideFolders = true; # overrides any folders added or deleted through the WebUI - guiAddress = "0.0.0.0:8384"; - settings = { - devices = { - "laptop" = { id = "2VEN7O3-PB3G2MK-XJI7R5Z-6MHTNN2-WMXERIX-6G7QWSK-VKSWOSH-Q5WFDAI"; }; - "jobb" = { id = "XRKVC74-UNJDQSW-4G3RHC3-5I4W5UT-D2MRMBZ-R4A4MMT-4XB4W47-LFLFBAV"; }; - }; - folders = { - "Documents" = { # Name of folder in Syncthing, also the folder ID - path = "/home/fw/docs"; # Which folder to add to Syncthing - devices = [ "laptop" ]; # Which devices to share the folder with - }; - }; - }; - }; - }; - - - security.rtkit.enable = true; networking.hostName = myhostname; - services.xserver.dpi = 100; - system.stateVersion = "23.11"; } diff --git a/moduler/base.nix b/moduler/base.nix index 58474f7..90ad371 100644 --- a/moduler/base.nix +++ b/moduler/base.nix @@ -1,5 +1,3 @@ -# This is your system's configuration file. -# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) { inputs, lib, @@ -9,8 +7,6 @@ }: { nixpkgs = { - overlays = [ - ]; config = { allowUnfree = true; }; @@ -92,19 +88,10 @@ }; console.keyMap = "sv-latin1"; - environment.systemPackages = with pkgs; [ - waypipe - ]; - services = { clipmenu.enable = true; openssh = { enable = true; }; - blueman = { - enable = true; - }; }; - - system.stateVersion = "25.05"; } diff --git a/moduler/hyprland.nix b/moduler/hyprland.nix index d9c1b8f..c52e31c 100644 --- a/moduler/hyprland.nix +++ b/moduler/hyprland.nix @@ -20,6 +20,7 @@ in waypipe ]; + services = { gnome.gnome-keyring.enable = true; greetd = { @@ -260,7 +261,7 @@ in # Applications "$mod, q, exec, ${pkgs.firefox}/bin/firefox" - "$mod, d, exec, ${pkgs.rofi}/bin/rofi" + "$mod, d, exec, ${pkgs.rofi}/bin/rofi -show run" # Screencapture "$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy" diff --git a/moduler/k3s.nix b/moduler/k3s.nix index a18b564..3a51f7a 100644 --- a/moduler/k3s.nix +++ b/moduler/k3s.nix @@ -9,21 +9,38 @@ let in { - networking.firewall.allowedTCPPorts = [ - 6443 - 5173 - 8080 - 3000 - ]; + networking.firewall = { + enable = true; + allowedTCPPorts = [ + 6443 + 5173 + 8080 + 3000 + 8384 + 22000 + ]; + allowedUDPPortRanges = [ + { + from = 4000; + to = 4007; + } + { + from = 8000; + to = 8010; + } + 22000 + 21027 + ]; + }; services.k3s = { enable = true; role = "server"; extraFlags = toString ([ - "--write-kubeconfig-mode \"0644\"" - "--cluster-init" - "--disable servicelb" - "--disable traefik" - "--disable local-storage" + "--write-kubeconfig-mode \"0644\"" + "--cluster-init" + # "--disable servicelb" + "--disable traefik" + "--disable local-storage" ]); clusterInit = true; }; @@ -38,9 +55,9 @@ in }; environment.systemPackages = with pkgs; [ - k3s - cifs-utils - nfs-utils - git + k3s + cifs-utils + nfs-utils + git ]; } diff --git a/moduler/network.nix b/moduler/network.nix index 3acf980..2ad3db6 100644 --- a/moduler/network.nix +++ b/moduler/network.nix @@ -18,12 +18,17 @@ environment.systemPackages = with pkgs; [ openvpn networkmanagerapplet - networkmanager-l2tp - strongswan - networkmanager_strongswan wireguard-tools networkmanager openssh - dig + + mtr # A network diagnostic tool + iperf3 + dnsutils # `dig` + `nslookup` + ldns # replacement of `dig`, it provide the command `drill` + aria2 # A lightweight multi-protocol & multi-source command-line download utility + socat # replacement of openbsd-netcat + nmap # A utility for network discovery and security auditing + ipcalc # it is a calculator for the IPv4/v6 addresses ]; } diff --git a/moduler/sound.nix b/moduler/sound.nix index 952c77d..2979e21 100644 --- a/moduler/sound.nix +++ b/moduler/sound.nix @@ -9,6 +9,7 @@ alsa.support32Bit = true; pulse.enable = true; }; + blueman.enable = true; }; hardware = { bluetooth = { diff --git a/moduler/system.nix b/moduler/system.nix index 4f606ec..de85150 100644 --- a/moduler/system.nix +++ b/moduler/system.nix @@ -7,80 +7,125 @@ pkgs, myhostname, ... -}: { +}: +{ - services.pcscd.enable = true; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; + services.pcscd.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; - programs.nh = { - enable = true; - clean.enable = true; - clean.extraArgs = "--keep-since 4d --keep 3"; - flake = "/home/fw/nix"; - }; + programs.nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 4d --keep 3"; + flake = "/home/fw/nix"; + }; + environment.systemPackages = with pkgs; [ + # Build + just + + # System + libnotify + lf + xsel + xbanish + unzip + zip + wget + alsa-utils + htop + procps + fzf + eza + btop + xclip + dysk + rsync + procs + dust + brightnessctl + lolcat + fortune + cowsay + ripgrep + poppler_utils + grc + pkg-config + vim + bat + fd + bluez + bluez-tools + openssl + imagemagick + pandoc + texliveFull + fastfetch + keyutils + pinentry-all + (pass.withExtensions ( + ext: with ext; [ + pass-import + pass-genphrase + pass-update + ] + )) + lazygit + chawan + go-passbolt-cli + waypipe + wl-clipboard + smartmontools - environment.systemPackages = with pkgs; [ - # System - libnotify - lf - xsel - xbanish - unzip - zip - wget - alsa-utils - htop - procps - fzf - eza - btop - xclip - dysk - rsync - procs - dust - brightnessctl - lolcat - fortune - cowsay - ripgrep - poppler_utils - grc - pkg-config - vim - bat - fd - bluez - bluez-tools - openssl - imagemagick - pandoc - texliveFull - fastfetch - keyutils - pinentry-all - (pass.withExtensions (ext: with ext; [ - pass-import - pass-genphrase - pass-update - ])) - lazygit - chawan - go-passbolt-cli - waypipe - wl-clipboard - smartmontools + # Typesetting + typst + typstyle + tinymist + websocat + nix-search-cli + libsixel - # Typesetting - typst - typstyle - tinymist - websocat - nix-search-cli - libsixel - ]; + # system call monitoring + strace # system call monitoring + ltrace # library call monitoring + lsof # list open files + + # system tools + sysstat + lm_sensors # for `sensors` command + ethtool + pciutils # lspci + usbutils # lsusb + + ( + let + base = pkgs.appimageTools.defaultFhsEnvArgs; + in + pkgs.buildFHSUserEnv ( + base + // { + name = "fhs"; + targetPkgs = + pkgs: + # pkgs.buildFHSUserEnv provides only a minimal FHS environment, + # lacking many basic packages needed by most software. + # Therefore, we need to add them manually. + # + # pkgs.appimageTools provides basic packages required by most software. + (base.targetPkgs pkgs) + ++ (with pkgs; [ + pkg-config + ncurses + # Feel free to add more packages here if needed. + ]); + profile = "export FHS=1"; + runScript = "bash"; + extraOutputsToInstall = [ "dev" ]; + } + ) + ) + ]; } diff --git a/moduler/waybar.nix b/moduler/waybar.nix index baa03e2..32cdfd3 100644 --- a/moduler/waybar.nix +++ b/moduler/waybar.nix @@ -1,25 +1,30 @@ { - config, - pkgs, ... -}: { - home.packages = with pkgs; [waybar]; +}: +{ programs.waybar = { enable = true; + systemd.enable = true; settings = { mainBar = { layer = "top"; - "modules-left" = ["hyprland/workspaces" "hyprland/window"]; - "modules-center" = ["clock"]; - "modules-right" = ["tray" "cpu" "memory" "idle_inhibitor" "pulseaudio" "bluetooth"]; + "modules-left" = [ + "hyprland/workspaces" + ]; + "modules-right" = [ + "tray" + "clock" + "pulseaudio" + "bluetooth" + ]; "hyprland/window" = { format = "{title}"; "max-length" = 333; "seperate-outputs" = true; }; clock = { - format = "{:%I:%M %a %d}"; + format = "{:%c}"; "tooltip-format" = "{calendar}"; calendar = { mode = "month"; @@ -47,22 +52,6 @@ format = "󰍛 {}%"; interval = 1; }; - "custom/gpu-util" = { - exec = "./scripts/gpu-util"; - format = "󰯿 {}"; - interval = 1; - }; - "custom/gpu-temp" = { - exec = "./scripts/gpu-temp"; - format = " {}"; - interval = 1; - }; - temperature = { - "hwmon-path" = "/sys/class/hwmon/hwmon1/temp1_input"; - "critical-threshold" = 80; - format = " {temperatureC}°C"; - interval = 1; - }; "hyprland/workspaces" = { format = "{icon}"; "active-only" = false; @@ -103,7 +92,11 @@ headphone = ""; phone = ""; portable = ""; - default = ["" "" ""]; + default = [ + "" + "" + "" + ]; }; "on-click-left" = "pavucontrol"; input = true; @@ -149,7 +142,7 @@ "tooltip-format" = "{title}"; "on-click" = "activate"; "on-click-middle" = "close"; - "ignore-list" = ["Alacritty"]; + "ignore-list" = [ "Alacritty" ]; "app_ids-mapping" = { firefoxdeveloperedition = "firefox-developer-edition"; }; @@ -175,256 +168,255 @@ }; }; style = '' - @define-color bg #${config.stylix.base16Scheme.base00}; - @define-color fg #${config.stylix.base16Scheme.base05}; - @define-color lbg #${config.stylix.base16Scheme.base01}; - @define-color yellow #${config.stylix.base16Scheme.base0A}; - @define-color lavender #${config.stylix.base16Scheme.base0E}; - @define-color peach #${config.stylix.base16Scheme.base0A}; - @define-color red #${config.stylix.base16Scheme.base08}; - @define-color green #${config.stylix.base16Scheme.base0B}; - @define-color blue #${config.stylix.base16Scheme.base0D}; - @define-color border #${config.stylix.base16Scheme.base02}; + @define-color bg #eff1f5; + @define-color fg #4c4f69; + @define-color lbg #e6e9ef; + @define-color yellow #df8e1d; + @define-color lavender #7287fd; + @define-color peach #fe640b; + @define-color red #d20f39; + @define-color green #40a02b; + @define-color blue #1e66f5; + @define-color border #dce0e8; - * { - min-height: 0; - margin: 0px 0px 0px 0px; - padding: 0; - border-radius: 7px; - font-family: "JetBrains Mono Nerd Font"; - font-size: 14pt; - font-weight: 700; - padding-bottom: 0px; - } + * { + min-height: 0; + margin: 0px 0px 0px 0px; + padding: 0; + border-radius: 7px; + font-family: "ComicShannsMono Nerd Font"; + font-size: 11pt; + font-weight: 700; + padding-bottom: 0px; + } - tooltip { - background: @bg; - border-radius: 7px; - border: 2px solid @border; - } + tooltip { + background: @bg; + border-radius: 7px; + border: 2px solid @border; + } - #window { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 7px; - border-radius: 3px; - border-color: @lbg; - background-color: @yellow; - color: @bg; - } + #window { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 7px; + border-radius: 3px; + border-color: @lbg; + background-color: @yellow; + color: @bg; + } - window#waybar.empty #window { - background-color: @bg; - border-bottom: none; - border-right: none; - } + window#waybar.empty #window { + background-color: @bg; + border-bottom: none; + border-right: none; + } - window#waybar { - background-color: @bg; - color: @lavender; - } + window#waybar { + background-color: @bg; + color: @lavender; + } - /* Workspaces */ - @keyframes button_activate { - from { opacity: .3 } - to { opacity: 1.; } - } + /* Workspaces */ + @keyframes button_activate { + from { opacity: .3 } + to { opacity: 1.; } + } - #workspaces { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding: 1px; - background-color: @bg; - color: @bg; - } + #workspaces { + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding: 1px; + background-color: @bg; + color: @bg; + } - #workspaces button { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding-left: 3px; - padding-right: 9px; - background-color: @bg; - color: @fg; - } + #workspaces button { + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding-left: 3px; + padding-right: 9px; + background-color: @bg; + color: @fg; + } - #workspaces button.active { - background-color:@blue; - color: @bg; - } + #workspaces button.active { + background-color:@blue; + color: @bg; + } - #workspaces button.urgent { - color: #F38BA8; - } + #workspaces button.urgent { + color: #F38BA8; + } - #workspaces button:hover { - border: solid transparent; - } + #workspaces button:hover { + border: solid transparent; + } - #custom-gpu-util { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 10px; - border-radius: 7px; - background-color: @bg; - color: @fg; - } + #custom-gpu-util { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 7px; + background-color: @bg; + color: @fg; + } - #tray { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: @bg; - color: @fg; - } + #tray { + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding-left: 10px; + padding-right: 10px; + background-color: @bg; + color: @fg; + } - #idle_inhibitor { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 12px; - border-radius: 3px; - background-color: @bg; - color: @fg; - } + #idle_inhibitor { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + background-color: @bg; + color: @fg; + } - #network { - margin: 5px 5px 2px 5px; - padding-left: 10px; - padding-right: 12px; - border-radius: 7px; - background-color: @bg; - color: @lavender; - } + #network { + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 7px; + background-color: @bg; + color: @lavender; + } - #network.linked { - color: @peach; - } - #network.disconnected, - #network.disabled { - color: @red; - } + #network.linked { + color: @peach; + } + #network.disconnected, + #network.disabled { + color: @red; + } - #custom-subs { - color: @fg; - margin: 5px 5px 2px 5px; - padding-left: 10px; - padding-right: 12px; - border-radius: 3px; - border-bottom: 2px solid @bg; - border-right: 2px solid @bg; - border-color: @lbg; - background-color: @red; - } + #custom-subs { + color: @fg; + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + border-bottom: 2px solid @bg; + border-right: 2px solid @bg; + border-color: @lbg; + background-color: @red; + } - #custom-spacer { - background-color: @yellow; - } + #custom-spacer { + background-color: @yellow; + } - #custom-cliphist { - color: @peach; - margin: 5px 5px 2px 5px; - padding-left: 10px; - padding-right: 12px; - border-radius: 3px; - background-color: @bg; - } + #custom-cliphist { + color: @peach; + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + background-color: @bg; + } - #custom-gpu-temp, - #cpu, - #memory, - #custom-clipboard, - #temperature { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 10px; - border-radius: 3px; - color: @fg; - background-color: @bg; - } + #custom-gpu-temp, + #cpu, + #memory, + #custom-clipboard, + #temperature { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @fg; + background-color: @bg; + } - #custom-playerctl { - margin: 5px 5px 2px 5px; - padding-left: 10px; - padding-right: 10px; - border-radius: 3px; - color: @fg; - background-color: @bg; - } + #custom-playerctl { + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @fg; + background-color: @bg; + } - #battery, - #backlight, - #bluetooth, - #pulseaudio { - margin-top: 5px; - margin-bottom: 2px; - color: @fg; - background-color: @bg; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - } + #battery, + #backlight, + #bluetooth, + #pulseaudio { + margin-top: 5px; + margin-bottom: 2px; + color: @fg; + background-color: @bg; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } - #battery, - #bluetooth { - margin-left: 0px; - margin-right: 5px; - padding-left: 7.5px; - padding-right: 10px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - } + #battery, + #bluetooth { + margin-left: 0px; + margin-right: 5px; + padding-left: 7.5px; + padding-right: 10px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } - #backlight, - #pulseaudio { - margin-right: 0px; - margin-left: 5px; - padding-left: 10px; - padding-right: 7.5px; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - } + #backlight, + #pulseaudio { + margin-right: 0px; + margin-left: 5px; + padding-left: 10px; + padding-right: 7.5px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } - #clock { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 10px; - border-radius: 3px; - color: @bg; - background-color: @green; - } + #clock { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @bg; + background-color: @green; + } - #taskbar { - border-radius: 0px 0px 0px 0; - padding: 0 3px; - margin: 0 0px; - color: #ffffff; - background-color: rgba(120,118,117,0.3); - } - #taskbar button { - border-radius: 0px 0px 0px 0px; - padding: 0 0 0 3px; - margin: 3px 1; - color: #ffffff; - background-color: rgba(120,118,117,0.1); - } - #taskbar button.active { - background-color: rgba(120,118,117,0.8); - } + #taskbar { + border-radius: 0px 0px 0px 0; + padding: 0 3px; + margin: 0 0px; + color: #ffffff; + background-color: rgba(120,118,117,0.3); + } + #taskbar button { + border-radius: 0px 0px 0px 0px; + padding: 0 0 0 3px; + margin: 3px 1; + color: #ffffff; + background-color: rgba(120,118,117,0.1); + } + #taskbar button.active { + background-color: rgba(120,118,117,0.8); + } - #mode { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 10px; - border-radius: 3px; - background-color: @bg; - color: @peach; - } + #mode { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + background-color: @bg; + color: @peach; + } ''; }; } -