refactor(treewide): clean-up, flatten, rework module system

This commit is contained in:
ooks-io 2024-06-05 22:56:07 +12:00
parent 4ddf9d2b35
commit 5590c8a951
58 changed files with 397 additions and 635 deletions

View file

@ -1,18 +1,21 @@
{ inputs, config, pkgs, lib, ... }:
let
cfg = config.ooknet.console.editor.helix;
inherit (config) colorscheme;
in
{
let
inherit (config) colorscheme;
inherit (lib) mkIf;
cfg = config.ooknet.editor.helix;
console = config.ooknet.console;
in
{
imports = [
./languages.nix
];
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.editor == "helix") {
programs.helix = {
enable = true;
defaultEditor = lib.mkIf cfg.default true;
defaultEditor = mkIf (console.editor == "helix") true;
package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (old: {
makeWrapperArgs = with pkgs;
old.makeWrapperArgs

View file

@ -1,11 +1,13 @@
{ pkgs, lib, config, ... }:
let
cfg = config.ooknet.console.editor.helix;
inherit (lib) mkIf getExe;
cfg = config.ooknet.editor.helix;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.editor == "helix") {
programs.helix.languages = {
language = let
deno = lang: {
@ -89,12 +91,12 @@ in
};
nil = {
command = lib.getExe pkgs.nil;
config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"];
command = getExe pkgs.nil;
config.nil.formatting.command = ["${getExe pkgs.alejandra}" "-q"];
};
dprint = {
command = lib.getExe pkgs.dprint;
command = getExe pkgs.dprint;
args = ["lsp"];
};

View file

@ -2,7 +2,9 @@
let
inherit (config.colorscheme) palette;
cfg = config.ooknet.console.editor.nvim;
inherit (lib) mkIf;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
@ -13,7 +15,7 @@ in
./plugins
];
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.neovim = {
viAlias = true;
vimAlias = true;

View file

@ -1,11 +1,13 @@
{ config, lib, ... }:
let
cfg = config.ooknet.console.editor.nvim;
inherit (lib) mkIf mapAttrsToList;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.nixvim = {
globals = {
mapleader = " ";
@ -14,7 +16,7 @@ in
keymaps = let
normal =
lib.mapAttrsToList
mapAttrsToList
(key: action: {
mode = "n";
inherit action key;
@ -25,7 +27,7 @@ in
"Y" = "$y";
};
visual =
lib.mapAttrsToList
mapAttrsToList
(key: action: {
mode = "v";
inherit action key;

View file

@ -1,28 +1,7 @@
{ lib, ... }:
{
imports = [
./indent.nix
./telescope.nix
./lualine.nix
];
options.ooknet.console.editor.nvim.plugins = {
indentBlankline = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable indent-blankline nvim plugin module";
};
lualine = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable lualine nvim plugin module";
};
telescope = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable telescope nvim plugin module";
};
};
}

View file

@ -1,11 +1,13 @@
{ config, lib, ... }:
let
cfg = config.ooknet.console.editor.nvim.plugins;
inherit (lib) mkIf;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.indentBlankline {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.nixvim.plugins.indent-blankline = {
enable = true;
};

View file

@ -1,11 +1,13 @@
{ config, lib, ... }:
let
cfg = config.ooknet.console.editor.nvim.plugins;
inherit (lib) mkIf;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.lualine {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.nixvim.plugins.lualine = {
enable = true;
theme = "base16";

View file

@ -1,11 +1,13 @@
{ config, lib, ... }:
let
cfg = config.ooknet.console.editor.nvim.plugins;
inherit (lib) mkIf;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.telescope {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.nixvim = {
plugins.telescope = {
enable = true;

View file

@ -2,11 +2,13 @@
let
inherit (config.colorscheme) palette;
cfg = config.ooknet.console.editor.nvim;
inherit (lib) mkIf;
cfg = config.ooknet.editor.nvim;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.editor == "nvim") {
programs.nixvim = {
options = {
relativenumber = true;

View file

@ -1,28 +0,0 @@
{ lib, ... }:
{
imports = [
./lf #configuration still needs some work
# ./ranger
];
options.ooknet.console.fileManager = {
lf = {
enable = lib.mkEnableOption "Enable lf file manager";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set lf as the default terminal file manager";
};
};
ranger = {
enable = lib.mkEnableOption "Enable ranger file manager";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set ranger as the default terminal file manager";
};
};
};
}

View file

@ -1,65 +0,0 @@
{ pkgs, lib, config, ... }:
#TODO - mkif wayland for previewer
# - manage previewer dependencies better
# - ripdrag support
# - color parity with eza
let
cfg = config.ooknet.console.fileManager.lf;
in
{
config = lib.mkIf cfg.enable {
home.sessionVariables.FILEMANAGER = lib.mkIf cfg.default "lf";
xdg.configFile."lf/icons".source = ./icons;
programs.lf = {
enable = true;
settings = {
hidden = true;
ignorecase = true;
drawbox = true;
icons = true;
};
previewer = {
keybinding = "i";
source = "${pkgs.ctpv}/bin/ctpv";
};
commands = {
fzf-lf = ''
''${{
res="$(find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m)"
if [ -d "$res" ] ; then
cmd="cd"
elif [ -f "$res" ] ; then
cmd="select"
else
exit 0
fi
lf -remote "send $id $cmd \"$res\""
}}
'';
mkdir = ''
''${{
printf "Directory Name: "
read DIR
mkdir $DIR
}}
'';
};
keybindings = {
c = "mkdir";
"<a-f>" = "fzf-lf";
};
extraConfig = ''
&${pkgs.ctpv}/bin/ctpv -s $id
cmd on-quit %${pkgs.ctpv}/bin/ctpv -e $id
set cleaner ${pkgs.ctpv}/bin/ctpvclear
set sixel true
'';
};
home.packages = with pkgs; [ chafa ctpv glow ];
};
}

View file

@ -1,12 +1,14 @@
{ config, lib, pkgs, ... }:
let
cfg = config.ooknet.console.multiplexer.tmux;
inherit (config.colorscheme) palette;
inherit (lib) mkIf;
cfg = config.ooknet.multiplexer.tmux;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.multiplexer == "tmux") {
programs.tmux = {
enable = true;
shell = "${pkgs.fish}/bin/fish";

View file

@ -1,11 +1,13 @@
{ lib, config, pkgs, ... }:
let
inherit (config.colorscheme) palette;
cfg = config.ooknet.console.multiplexer.zellij;
inherit (lib) mkIf;
cfg = config.ooknet.multiplexer.zellij;
console = config.ooknet.console;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || console.multiplexer == "zellij") {
programs.zellij = {
enable = true;
settings = {

View file

@ -1,9 +1,13 @@
{ config, lib, ... }:
{ config, lib, osConfig, ... }:
let
cfg = config.ooknet.console.shell.bash;
inherit (lib) mkIf;
cfg = config.ooknet.shell.bash;
admin = osConfig.ooknet.host.admin;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || admin.shell == "bash") {
programs.bash.enable = true;
};
}

View file

@ -1,17 +1,7 @@
{ lib, ... }:
{
imports = [
./fish
./bash
./zsh
];
options.ooknet.console.shell = {
fish = {
enable = lib.mkEnableOption "Enable fish configuration";
};
bash = {
enable = lib.mkEnableOption "Enable bash configuration";
};
};
}

View file

@ -1,14 +1,15 @@
{ lib, config, ... }:
{ lib, config, osConfig, ... }:
let
cfg = config.ooknet.console.shell.fish;
inherit (lib) mkIf;
hasPackage = pname: lib.any (p: p ? pname && p.pname == pname) config.home.packages;
inherit (lib) mkIf any;
cfg = config.ooknet.shell.fish;
admin = osConfig.ooknet.host.admin;
hasPackage = pname: any (p: p ? pname && p.pname == pname) config.home.packages;
hasEza = hasPackage "eza";
hasBat = hasPackage "bat";
in
{
config = {
programs.fish = mkIf cfg.enable {
config = mkIf (cfg.enable || admin.shell == "fish") {
programs.fish = {
enable = true;
shellAbbrs = {
fe = "cd $FLAKE; $EDITOR $FLAKE";

View file

@ -1,14 +1,13 @@
{ lib, config, ... }:
{ lib, config, osConfig, ... }:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.ooknet.console.shell.zsh;
inherit (lib) mkIf;
cfg = config.ooknet.shell.zsh;
admin = osConfig.ooknet.host.admin;
in
{
options.ooknet.console.shell.zsh.enable = mkEnableOption "";
config = mkIf cfg.enable {
config = mkIf (cfg.enable || admin.shell == "zsh") {
programs.zsh = {
enable = true;
autocd = true;

View file

@ -0,0 +1,12 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.ooknet.tools.ffmpeg;
in
{
config = mkIf cfg.enable {
home.packages = [ pkgs.ffmpeg ];
};
}

View file

@ -1,8 +1,9 @@
{
imports = [
./desktop
./console
./config
./theme
./base # default configuration modules for home-manager.
./desktop # gui modules
./console # cli modules
./appearance # modules for configuring themes ie: fonts, wallpapers, color-schemes, etc...
./options # all module options live here
];
}

View file

@ -1,29 +1,7 @@
{ lib, ... }:
{
imports = [
./firefox
# ./schizofox
#./chrome -- still needs to be implemented
#./brave -- still needs tio be implemented
];
options.ooknet.desktop.browser = {
firefox = {
enable = lib.mkEnableOption "Enable firefox browser";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set Firefox as default browser";
};
};
schizofox = {
enable = lib.mkEnableOption "Enable schizofox browser";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set schizofox as default browser";
};
};
};
}

View file

@ -2,18 +2,17 @@
let
addons = inputs.firefox-addons.packages.${pkgs.system};
cfg = config.ooknet.desktop.browser.firefox;
cfg = config.ooknet.browser.firefox;
browser = config.ooknet.desktop.browser;
inherit (lib) mkIf;
in
{
config = {
nixpkgs.config.allowUnfree = true;
home.sessionVariables = mkIf cfg.default {
BROWSER = "firefox";
};
config = mkIf (cfg.enable || browser == "firefox") {
home.sessionVariables.BROWSER = mkIf (browser == "firefox") "firefox";
ooknet.binds.browser = mkIf (browser == "firefox") "firefox";
programs.firefox = mkIf cfg.enable {
programs.firefox = {
enable = true;
profiles.ooks = {
extensions = with addons; [

View file

@ -1,72 +0,0 @@
{ inputs, config, lib, ... }:
let
cfg = config.ooknet.desktop.browser.schizofox;
fonts = config.ooknet.theme.fonts;
inherit (config.colorscheme) palette;
in
{
imports = [inputs.schizofox.homeManagerModule];
config = lib.mkIf cfg.enable {
home.sessionVariables.BROWSER = lib.mkIf cfg.default "firefox";
programs.schizofox = {
enable = true;
theme = {
font = "${fonts.regular.family}";
colors = {
background-darker = "${palette.base00}";
background = "${palette.base01}";
foreground = "${palette.base07}";
};
};
security = {
sanitizeOnShutdown = false;
sandbox = true;
noSessionRestore = false;
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0";
};
misc = {
drmFix = true;
disableWebgl = false;
};
extensions = {
extraExtensions = let
mkUrl = name: "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
extensions = [
{
id = "1018e4d6-728f-4b20-ad56-37578a4de76";
name = "flagfox";
}
{
id = "{c2c003ee-bd69-42a2-b0e9-6f34222cb046}";
name = "auto-tab-discard";
}
{
id = "{d634138d-c276-4fc8-924b-40a0ea21d284}";
name = "1password-x-password-manager";
}
{
id = "{a4c4eda4-fb84-4a84-b4a1-f7c1cbf2a1ad}";
name = "refined-github-";
}
{
id = "sponsorBlocker@ajay.app";
name = "sponsorblock";
}
{
id = "{tridactyl.vim@cmcaine.co.uk}";
name = "tridactyl-vim";
}
];
extraExtensions = builtins.foldl' (acc: ext: acc // {ext.id = {install_url = mkUrl ext.name;};}) {} extensions;
in
extraExtensions;
};
};
};
}

View file

@ -1,153 +1,5 @@
{ config, lib, pkgs, ... }:
let
cfg = config.ooknet.desktop.communication.discord;
fonts = config.ooknet.theme.fonts;
inherit (config.colorscheme) palette;
inherit (lib) mkIf mkEnableOption;
in
{
options.ooknet.desktop.communication.discord.enable = mkEnableOption "Enable discord home manager module";
config = mkIf cfg.enable {
home.packages = [ pkgs.vesktop ];
xdg.configFile."vesktop/themes/nix.css".text = /* css */ ''
/**
* @name nix-colors-minimal
* @author aoku
* @description minimal theme designed with nix colors
*/
:root {
--nix-bg1: #${palette.base00};
--nix-bg2: #${palette.base01};
--nix-bg3: #${palette.base02};
--nix-fg1: #${palette.base05};
--nix-fg2: #${palette.base07};
--nix-fg3: #${palette.base03};
--nix-link: #${palette.base0D};
--nix-accent: #${palette.base08};
--nix-hi: #${palette.base0B};
--font-mono: ${fonts.monospace.family}, monospace;
--font-regular: ${fonts.regular.family}, sans serif;
/* server collapse */
--sb-collapsed-width: 12px;
--sb-transition-duration: 0s;
}
.theme-dark {
--background-primary: var(--nix-bg1);
--background-secondary: var(--nix-bg1);
--background-secondary-alt: var(--nix-bg1);
--background-accent: var(--nix-accent);
--background-tertiary: var(--nix-bg1);
--background-floating: var(--nix-bg1);
--background-mentioned: var(--nix-bg1);
--background-mentioned-hover: var(--nix-bg1);
--background-mobile: var(--nix-bg1);
--background-mobile-secondary: var(--nix-bg2);
--background-modifier-selected: var(--nix-bg1);
--channeltextarea-background:var(--nix-bg1);
--background-modifier-hover:var(--nix-bg1);
--activity-card-background: var(--nix-bg2);
--header-primary: var(--nix-fg2);
--header-secondary: var(--nix-fg1);
--text-normal: var(--nix-fg1);
--text-muted: var(--nix-fg1);
--text-link: var(--nix-link);
--text-warning: var(--nix-accent);
--font-primary: var(--font-mono);
--font-headline: var(--font-mono);
--font-display: var(--font-mono);
--interactive-normal: var(--nix-fg1); /*base05*/
--interactive-hover: var(--nix-hi); /*base0B*/
--interactive-active: var(--nix-fg2);
--interactive-muted: var(--nix-fg3); /*base03*/
--channels-default: var(--nix-fg1);
--scrollbar-thin-thumb: transparent;
--scrollbar-thin-track: transparent;
--scrollbar-auto-thumb: var(--nix-fg1);
--scrollbar-auto-track:var(--nix-bg1);
--scrollbar-auto-scrollbar-color-thumb: var(--nix-accent);
}
.messagesWrapper_ea2b0b {
font-family: var(--font-regular);
}
.titleWrapper__482dc {
font-family: var(--font-mono);
}
.link__95dc0 /* text channel*/{
border-radius: 0px;
margin-left: -10px;
font-family: var(--font-mono);
}
.container_ca50b9 .avatar_f8541f { /*avatar*/
display: none;
}
.form__13a2c /* text input box resize */ {
height: 50px;
font-family: var(--font-regular);
}
.containerDefault__3187b .wrapper__7bcde:before /* text channel */{
content: "";
display:inline-block;
background: var(--nix-hi);
height: 100%;
position: absolute;
left: 0;
}
/* server collapse */
.guilds__2b93a /* servers */{
overflow: hidden !important;
width: var(--sb-collapsed-width, 75px);
transition: width var(--sb-transition-duration);
}
.guilds__2b93a:hover /* expand server bar on hover */{
width: 70px;
overflow: visible !important;
animation: server-bar-overflow 0s linear 0ms forwards
}
.guilds__2b93a ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-collapsed-left, var(--sb-collapsed-width));
top: var(--sb-collapsed-top, 0px);
bottom: var(--sb-collapsed-bottom, 0px);
right: var(--sb-collapsed-right, 0px);
transition-property: var(--sb-transition-property, left);
transition-duration: var(--sb-transition-duration);
}
.guilds__2b93a:hover ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-left, 70px);
top: var(--sb-top, 0px);
bottom: var(--sb-bottom, 0px);
right: var(--sb-right, 0px);
}
@keyframes server-bar-overflow{
from{
overflow: hidden;
}
to{
overflow: visible;
}
}
'';
};
imports = [
./vesktop.nix
]
}

View file

@ -0,0 +1,154 @@
{ config, lib, pkgs, ... }:
let
inherit (config.colorscheme) palette;
inherit (lib) mkIf;
cfg = config.ooknet.communication.discord;
discord = config.ooknet.desktop.discord;
fonts = config.ooknet.theme.fonts;
in
{
config = mkIf (cfg.enable || discord == "vesktop") {
home.packages = [ pkgs.vesktop ];
ooknet.binds.discord = "vesktop";
xdg.configFile."vesktop/themes/nix.css".text = /* css */ ''
/**
* @name nix-colors-minimal
* @author aoku
* @description minimal theme designed with nix colors
*/
:root {
/* Palette */
--nix-bg1: #${palette.base00};
--nix-bg2: #${palette.base01};
--nix-bg3: #${palette.base02};
--nix-fg1: #${palette.base05};
--nix-fg2: #${palette.base07};
--nix-fg3: #${palette.base03};
--nix-link: #${palette.base0D};
--nix-accent: #${palette.base08};
--nix-hi: #${palette.base0B};
--font-mono: ${fonts.monospace.family}, monospace;
--font-regular: ${fonts.regular.family}, sans serif;
/* server collapse */
--sb-collapsed-width: 12px;
--sb-transition-duration: 0s;
}
.theme-dark {
--background-primary: var(--nix-bg1);
--background-secondary: var(--nix-bg1);
--background-secondary-alt: var(--nix-bg1);
--background-accent: var(--nix-accent);
--background-tertiary: var(--nix-bg1);
--background-floating: var(--nix-bg1);
--background-mentioned: var(--nix-bg1);
--background-mentioned-hover: var(--nix-bg1);
--background-mobile: var(--nix-bg1);
--background-mobile-secondary: var(--nix-bg2);
--background-modifier-selected: var(--nix-bg1);
--channeltextarea-background:var(--nix-bg1);
--background-modifier-hover:var(--nix-bg1);
--activity-card-background: var(--nix-bg2);
--header-primary: var(--nix-fg2);
--header-secondary: var(--nix-fg1);
--text-normal: var(--nix-fg1);
--text-muted: var(--nix-fg1);
--text-link: var(--nix-link);
--text-warning: var(--nix-accent);
--font-primary: var(--font-mono);
--font-headline: var(--font-mono);
--font-display: var(--font-mono);
--interactive-normal: var(--nix-fg1); /*base05*/
--interactive-hover: var(--nix-hi); /*base0B*/
--interactive-active: var(--nix-fg2);
--interactive-muted: var(--nix-fg3); /*base03*/
--channels-default: var(--nix-fg1);
--scrollbar-thin-thumb: transparent;
--scrollbar-thin-track: transparent;
--scrollbar-auto-thumb: var(--nix-fg1);
--scrollbar-auto-track:var(--nix-bg1);
--scrollbar-auto-scrollbar-color-thumb: var(--nix-accent);
}
.messagesWrapper_ea2b0b {
font-family: var(--font-regular);
}
.titleWrapper__482dc {
font-family: var(--font-mono);
}
.link__95dc0 /* text channel*/{
border-radius: 0px;
margin-left: -10px;
font-family: var(--font-mono);
}
.container_ca50b9 .avatar_f8541f { /*avatar*/
display: none;
}
.form__13a2c /* text input box resize */ {
height: 50px;
font-family: var(--font-regular);
}
.containerDefault__3187b .wrapper__7bcde:before /* text channel */{
content: "";
display:inline-block;
background: var(--nix-hi);
height: 100%;
position: absolute;
left: 0;
}
/* server collapse */
.guilds__2b93a /* servers */{
overflow: hidden !important;
width: var(--sb-collapsed-width, 75px);
transition: width var(--sb-transition-duration);
}
.guilds__2b93a:hover /* expand server bar on hover */{
width: 70px;
overflow: visible !important;
animation: server-bar-overflow 0s linear 0ms forwards
}
.guilds__2b93a ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-collapsed-left, var(--sb-collapsed-width));
top: var(--sb-collapsed-top, 0px);
bottom: var(--sb-collapsed-bottom, 0px);
right: var(--sb-collapsed-right, 0px);
transition-property: var(--sb-transition-property, left);
transition-duration: var(--sb-transition-duration);
}
.guilds__2b93a:hover ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-left, 70px);
top: var(--sb-top, 0px);
bottom: var(--sb-bottom, 0px);
right: var(--sb-right, 0px);
}
@keyframes server-bar-overflow{
from{
overflow: hidden;
}
to{
overflow: visible;
}
}
'';
};
}

View file

@ -0,0 +1,12 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.ooknet.creative.audacity;
in
{
config = mkIf cfg.enable {
home.packages = [ pkgs.audacity ];
};
}

View file

@ -1,13 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.ooknet.desktop.creative.audio.audacity;
inherit (lib) mkIf mkEnableOption;
in
{
options.ooknet.desktop.creative.audio.audacity.enable = mkEnableOption "Enable audacity home module";
config = mkIf cfg.enable {
home.packages = [ pkgs.audacity ];
};
}

View file

@ -1,7 +1,6 @@
{
imports = [
./audio
./image
# ./video
./audacity.nix
./inkscape.nix
];
}

View file

@ -1,14 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.ooknet.desktop.creative.audio.inkscape;
inherit (lib) mkIf mkEnableOption;
in
{
options.ooknet.desktop.creative.audio.inkscape.enable = mkEnableOption "Enable inkscape home module";
config = mkIf cfg.enable {
home.packages = [ pkgs.inkscape-with-extensions ];
};
}

View file

@ -0,0 +1,13 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.ooknet.creative.inkscape;
in
{
config = mkIf cfg.enable {
home.packages = [ pkgs.inkscape-with-extensions ];
};
}

View file

@ -1,13 +1,5 @@
{ lib, ... }:
{
imports = [
./imv
./imv.nix
];
options.ooknet.desktop.media.image = {
imv = {
enable = lib.mkEnableOption "Enable imv image viewer";
};
};
}

View file

@ -1,9 +1,12 @@
{ lib, config, ... }:
let
cfg = config.ooknet.desktop.media.image.imv;
inherit (lib) mkIf;
cfg = config.ooknet.media.image.imv;
in
{
config = lib.mkIf cfg.enable {
config = mkIf cfg.enable {
programs = {
imv = {
enable = true;

View file

@ -1,17 +1,6 @@
{ lib, ... }:
{
imports = [
#./spotify --- still needs to be implemented
./easyeffects
./tui
];
options.ooknet.desktop.media.music = {
tui = {
enable = lib.mkEnableOption "Enable tui music";
};
spotify = {
enable = lib.mkEnableOption "Enable spotify";
};
};
}

View file

@ -1,15 +0,0 @@
{lib, config, ... }:
let
cfg = config.ooknet.desktop.media.music.easyeffects;
inherit (lib) mkIf mkEnableOption;
in
{
options.ooknet.desktop.media.music.easyeffects.enable = mkEnableOption "Enable easy effects home module";
config = mkIf cfg.enable {
services.easyeffects = {
enable = true;
};
};
}

View file

@ -2,8 +2,13 @@
let
inherit (config.colorscheme) palette;
inherit (lib) mkIf;
cfg = config.ooknet.desktop.media.music.tui;
zellij = config.ooknet.console.multiplexer.zellij;
zellij = config.ooknet.multiplexer.zellij;
multiplexer= config.ooknet.console.multiplexer;
# removed image support because it was causing issues with zellij
spotify-cli = pkgs.spotify-player.override {
withImage = false;
withSixel = false;
@ -11,15 +16,14 @@ let
in
{
config = lib.mkIf cfg.enable {
config = mkIf cfg.enable {
home.packages = with pkgs; [
termusic
spotify-cli
alsa-utils
mpv
];
programs.cava = {
enable = true;
settings = {
@ -35,6 +39,7 @@ in
};
};
};
xdg.configFile."spotify-player/app.toml".text = /* toml */ ''
theme = "default"
client_id = "fc4c3656d7cc4a7ea70c6080965f8b1a"
@ -68,7 +73,7 @@ in
normalization = false
'';
xdg.configFile."zellij/layouts/music.kdl".text = lib.mkIf zellij.enable /* kdl */ ''
xdg.configFile."zellij/layouts/music.kdl".text = mkIf (zellij.enable || multiplexer == "zellij") /* kdl */ ''
layout {
default_tab_template {
pane size=2 borderless=true {
@ -114,7 +119,7 @@ in
}
}
'';
home.shellAliases = lib.mkIf zellij.enable {
home.shellAliases = mkIf (zellij.enable || multiplexer == "zellij") {
zjm = "zellij --layout music";
};
};

View file

@ -1,20 +1,7 @@
{ lib, ... }:
{
imports = [
./youtube
./jellyfin
./mpv
./youtube.nix
./jellyfin-player.nix
./mpv.nix
];
options.ooknet.desktop.media.video = {
mpv = {
enable = lib.mkEnableOption "Enable mpv video player";
};
youtube = {
enable = lib.mkEnableOption "Enable youtube tui player";
};
jellyfin = {
enable = lib.mkEnableOption "Enable jellyifn media player";
};
};
}

View file

@ -0,0 +1,12 @@
{ pkgs, lib, config, ... }:
let
inherit (lib) mkIf;
cfg = config.ooknet.media.video.jellyfinPlayer;
in
{
config = mkIf cfg.enable {
home.packages = [ pkgs.jellyfin-media-player ];
};
}

View file

@ -1,9 +0,0 @@
{ pkgs, lib, config, ... }:
let
cfg = config.ooknet.desktop.media.video.jellyfin;
in
{
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [ jellyfin-media-player ];
};
}

View file

@ -0,0 +1,14 @@
{ lib, config, ... }:
let
inherit (lib) mkIf;
cfg = config.ooknet.media.video.mpv;
in
{
config = mkIf cfg.enable {
programs.mpv = {
enable = true;
};
};
}

View file

@ -1,13 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.ooknet.desktop.media.video.mpv;
in
{
config = {
programs.mpv = lib.mkIf cfg.enable {
enable = true;
};
home.packages = [ pkgs.ffmpeg ];
};
}

View file

@ -0,0 +1,15 @@
{ lib, config, pkgs, ...}:
let
inherit (lib) mkIf;
cfg = config.ooknet.media.video.youtube;
in
{
config = mkIf cfg.enable {
home.packages = [ pkgs.youtube-tui ];
programs.yt-dlp = {
enable = true;
};
};
}

View file

@ -1,12 +0,0 @@
{ lib, config, pkgs, ...}:
let
cfg = config.ooknet.desktop.media.video.youtube;
in
{
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [ youtube-tui ];
programs.yt-dlp = {
enable = true;
};
};
}

View file

@ -2,17 +2,8 @@
{
imports = [
./obsidian
./zathura
./office
./notes
./pdf
];
options.ooknet.desktop.productivity = {
obsidian = {
enable = lib.mkEnableOption "enable obsidian home module";
};
zathura = {
enable = lib.mkEnableOption "enable zathura home module";
};
};
}

View file

@ -1,5 +1,5 @@
{
imports = [
./inkscape
./obsidian.nix
];
}

View file

@ -1,15 +1,14 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
inherit (lib) mkIf;
cfg = config.ooknet.productivity.notes.obsidian;
notes = config.ooknet.desktop.notes;
in
{
options.ooknet.productivity.notes.obsidian.enable = mkEnableOption "";
config = mkIf (cfg.enable || notes == "obsidian") {
home.packages = [ pkgs.obsidian ];
ooknet.binds.notes = mkIf (notes == "obsidian") "obsidian";
};
}

View file

@ -1,13 +1,6 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.ooknet.desktop.productivity.office;
in
# TODO: add openoffice
{
options.ooknet.desktop.productivity.office.enable = mkEnableOption "enable office home module";
config = mkIf cfg.enable {
home.packages = [ pkgs.libreoffice ];
};
imports = [
./libreoffice.nix
];
}

View file

@ -0,0 +1,13 @@
{ lib, config, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.ooknet.desktop.productivity.office;
in
{
options.ooknet.desktop.productivity.office.enable = mkEnableOption "enable office home module";
config = mkIf cfg.enable {
home.packages = [ pkgs.libreoffice ];
};
}

View file

@ -1,5 +1,5 @@
{
imports = [
./audacity
./zathura.nix
];
}

View file

@ -1,13 +1,15 @@
{ lib, config, ... }:
let
cfg = config.ooknet.desktop.productivity.zathura;
inherit (config.colorscheme) palette;
fonts = config.ooknet.theme.fonts;
inherit (lib) mkIf;
cfg = config.ooknet.productivity.pdf.zathura;
pdf = config.ooknet.desktop.pdf;
fonts = config.ooknet.fonts;
in
{
config = lib.mkIf cfg.enable {
config = mkIf (cfg.enable || pdf == "zathura") {
programs.zathura = {
enable = true;
options = {

View file

@ -1,5 +1,5 @@
{
imports = [
./polkit
./polkit.nix
];
}

View file

@ -1,43 +1,6 @@
{ lib, config, ... }:
let
cfg = config.ooknet.desktop.terminal;
in
{
imports = [
./foot
./kitty
./foot.nix
./kitty.nix
];
options.ooknet.desktop.terminal = {
foot = {
enable = lib.mkEnableOption "Enable foot terminal";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set foot as default terminal in environment variables";
};
};
kitty = {
enable = lib.mkEnableOption "Enable kitty terminal";
default = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Set kitty as default terminal in environment variables";
};
};
};
config = {
assertions = [
{
assertion =
(lib.length (lib.filter (x: x) [
cfg.foot.default or false
cfg.kitty.default or false
]) <= 1);
message = "Only one terminal can be default in the configuration";
}
];
};
}

View file

@ -2,16 +2,22 @@
let
inherit (config.colorscheme) palette;
fonts = config.ooknet.theme.fonts;
inherit (lib) mkIf;
fonts = config.ooknet.fonts;
cfg = config.ooknet.desktop.terminal.foot;
terminal = config.ooknet.desktop.terminal;
in
{
config = lib.mkIf cfg.enable {
home.sessionVariables = lib.mkIf cfg.default {
config = mkIf (cfg.enable || terminal == "foot") {
home.sessionVariables = mkIf (terminal == "foot") {
TERMINAL = "foot";
TERM = "foot";
};
ooknet.binds.terminal = mkIf (terminal == "foot") "foot";
ooknet.binds.terminalLaunch = mkIf (terminal == "foot") "foot";
programs.foot = {
enable = true;
server.enable = true;
@ -38,6 +44,7 @@ in
style = "beam";
blink = "yes";
};
colors = {
alpha = 1.0;
foreground = "${palette.base05}";

View file

@ -1,25 +1,32 @@
{ config, lib, ... }:
{ config, lib, osConfig, ... }:
let
inherit (lib) mkIf;
inherit (config.colorscheme) palette;
fonts = config.ooknet.theme.font;
cfg = config.ooknet.desktop.terminal.kitty;
fish = config.ooknet.console.shell.fish;
fonts = config.ooknet.fonts;
cfg = config.ooknet.terminal.kitty;
terminal = config.ooknet.desktop.terminal;
shell = osConfig.ooknet.host.admin.shell;
in
{
config = lib.mkIf cfg.enable {
home.sessionVariables = lib.mkIf cfg.default {
{
config = mkIf (cfg.enable || terminal == "kitty") {
home.sessionVariables = mkIf (terminal == "kitty") {
TERMINAL = "kitty -1";
TERM = "kitty -1";
};
ooknet.binds.terminal = mkIf (terminal == "kitty") "kitty -1";
ooknet.binds.terminalLaunch = mkIf (terminal == "kitty") "kitty -e";
programs.kitty = {
enable = true;
font = {
name = fonts.monospace.family;
size = 12;
};
shellIntegration.enableFishIntegration = lib.mkif fish.enable true;
shellIntegration.enableFishIntegration = mkIf (shell == "fish") true;
settings = {
scrollback_lines = 4000;
scrollback_pager_history_size = 2048;

View file

@ -1,5 +1,5 @@
{
imports = [
./kdeconnect
./kdeconnect.nix
];
}

View file

@ -16,5 +16,6 @@ in
nixIndex.enable = mkEnableOption "";
starship.enable = mkEnableOption "";
utils.enable = mkEnableOption "";
ffmpeg.enable = mkEnableOption "";
};
}

View file

@ -15,7 +15,7 @@ in
youtube.enable = mkEnableOption "";
};
music = {
spotifyCli.enable = mkEnableOption "";
tui.enable = mkEnableOption "";
};
};
}

View file

@ -11,10 +11,6 @@ in
type = nullOr (enum ["helix" "nvim"]);
default = "helix";
};
shell = mkOption {
type = nullOr (enum ["fish" "bash" "zsh"]);
default = "zsh";
};
multiplexer = mkOption {
type = nullOr (enum ["tmux" "zellij"]);
default = null;