From 4e57e466e4b807a0f6526c9f11400b00f7cffc13 Mon Sep 17 00:00:00 2001 From: Gautier DI FOLCO Date: Tue, 1 Oct 2024 08:57:43 +0200 Subject: [PATCH] nixos/vivid: init module --- .../manual/release-notes/rl-2505.section.md | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/programs/vivid.nix | 63 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 nixos/modules/programs/vivid.nix diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index db753bbdf4ae..8720ac8d2d9e 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -59,6 +59,8 @@ - [agorakit](https://github.com/agorakit/agorakit), an organization tool for citizens' collectives. Available with [services.agorakit](options.html#opt-services.agorakit.enable). +- [vivid](https://github.com/sharkdp/vivid), a generator for LS_COLOR. Available as [programs.vivid](#opt-programs.vivid.enable). + - [waagent](https://github.com/Azure/WALinuxAgent), the Microsoft Azure Linux Agent (waagent) manages Linux provisioning and VM interaction with the Azure Fabric Controller. Available with [services.waagent](options.html#opt-services.waagent.enable). - [nostr-rs-relay](https://git.sr.ht/~gheartsfield/nostr-rs-relay/), This is a nostr relay, written in Rust. Available as [services.nostr-rs-relay](options.html#opt-services.nostr-rs-relay.enable). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index ae286756200c..7bdd8fa43f2c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -317,6 +317,7 @@ ./programs/usbtop.nix ./programs/vim.nix ./programs/virt-manager.nix + ./programs/vivid.nix ./programs/wavemon.nix ./programs/wayland/cardboard.nix ./programs/wayland/hyprlock.nix diff --git a/nixos/modules/programs/vivid.nix b/nixos/modules/programs/vivid.nix new file mode 100644 index 000000000000..06c618e23fc1 --- /dev/null +++ b/nixos/modules/programs/vivid.nix @@ -0,0 +1,63 @@ +{ + pkgs, + config, + lib, + ... +}: + +let + cfg = config.programs.vivid; +in +{ + options = { + programs.vivid = { + enable = lib.mkOption { + default = false; + description = "Whether to configure LS_COLORS with vivid."; + type = lib.types.bool; + }; + + package = lib.mkPackageOption pkgs "vivid" { example = "vivid"; }; + + theme = lib.mkOption { + default = "gruvbox-dark-soft"; + description = "Theme to be used (see `vivid themes`)"; + example = "solarized-dark"; + type = lib.types.str; + }; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + programs = + let + interactiveShellInit = lib.mkAfter '' + export LS_COLORS="$(${lib.getExe cfg.package} generate ${cfg.theme})" + ''; + enableLsColors = lib.mkOverride 999 false; + in + { + bash = { + inherit interactiveShellInit enableLsColors; + }; + zsh = { + inherit interactiveShellInit enableLsColors; + }; + }; + + assertions = [ + { + assertion = !config.programs.bash.enableLsColors; + message = "`programs.vivid.enable` is incompatible with `programs.bash.enableLsColors`."; + } + { + assertion = !config.programs.zsh.enableLsColors; + message = "`programs.vivid.enable` is incompatible with `programs.zsh.enableLsColors`."; + } + ]; + }; + + meta.maintainers = with lib.maintainers; [ blackheaven ]; +}