Use alejandra formatter / fix warnings

This commit is contained in:
DashieTM 2025-02-15 16:23:22 +01:00
parent c5b1041bbb
commit 693d4e3c70
70 changed files with 1424 additions and 1547 deletions

View file

@ -5,12 +5,13 @@
hostName, hostName,
modulesPath, modulesPath,
... ...
}: }: let
let
username = config.conf.username; username = config.conf.username;
in in {
{ imports = [
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; (modulesPath + "/installer/scan/not-detected.nix")
#(modulesPath + "/misc/nixpkgs/read-only.nix")
];
# Bootloader. # Bootloader.
boot = { boot = {
@ -34,11 +35,13 @@ in
"sd_mod" "sd_mod"
]; ];
}; };
kernelParams = [ kernelParams =
''resume="PARTLABEL=SWAP"'' [
''quiet'' ''resume="PARTLABEL=SWAP"''
''udev.log_level=3'' ''quiet''
] ++ config.conf.bootParams; ''udev.log_level=3''
]
++ config.conf.bootParams;
}; };
# Enable networking # Enable networking
@ -59,6 +62,8 @@ in
flatpak.enable = true; flatpak.enable = true;
xserver.enable = true; xserver.enable = true;
fstrim.enable = lib.mkDefault true; fstrim.enable = lib.mkDefault true;
# Enable sound with pipewire.
pulseaudio.enable = false;
pipewire = { pipewire = {
enable = true; enable = true;
alsa = { alsa = {
@ -78,16 +83,14 @@ in
options = "--delete-older-than 7d --delete-generations +5"; options = "--delete-older-than 7d --delete-generations +5";
}; };
settings = { settings = {
trusted-users = [ username ]; trusted-users = [username];
auto-optimise-store = true; auto-optimise-store = true;
experimental-features = "nix-command flakes"; experimental-features = "nix-command flakes";
}; };
}; };
# Enable sound with pipewire.
hardware = { hardware = {
pulseaudio.enable = false;
cpu.${config.conf.cpu}.updateMicrocode = cpu.${config.conf.cpu}.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware; lib.mkDefault config.hardware.enableRedistributableFirmware;
}; };
@ -124,5 +127,4 @@ in
password = "firstlogin"; password = "firstlogin";
}; };
}; };
} }

View file

@ -1,5 +1,8 @@
{ pkgs, config, ... }:
{ {
pkgs,
config,
...
}: {
environment = { environment = {
variables = { variables = {
GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";

View file

@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: let
let
layout = pkgs.writeText "dashie" '' layout = pkgs.writeText "dashie" ''
xkb_symbols "dashie" xkb_symbols "dashie"
{ {
@ -10,12 +9,11 @@ let
key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
}; };
''; '';
in in {
{ environment.systemPackages = [pkgs.xorg.xkbcomp];
environment.systemPackages = [ pkgs.xorg.xkbcomp ];
services.xserver.xkb.extraLayouts.dashie = { services.xserver.xkb.extraLayouts.dashie = {
description = "US layout with 'umlaut'"; description = "US layout with 'umlaut'";
languages = [ "eng" ]; languages = ["eng"];
symbolsFile = "${layout}"; symbolsFile = "${layout}";
}; };
} }

View file

@ -4,9 +4,8 @@
build_systems, build_systems,
lib, lib,
... ...
}: }: let
let makeOptionsDoc = configuration: pkgs.nixosOptionsDoc {options = configuration;};
makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; };
generateDocs = obj: '' generateDocs = obj: ''
touch src/${obj.fst}.md touch src/${obj.fst}.md
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
@ -14,8 +13,8 @@ let
summaryAppend = name: '' summaryAppend = name: ''
echo "- [${name}](${name}.md)" >> src/SUMMARY.md echo "- [${name}](${name}.md)" >> src/SUMMARY.md
''; '';
system = (build_systems { root = ../example/.; })."example".options; system = (build_systems {root = ../example/.;})."example".options;
makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc {options = system.mods.${name};};
conf = makeOptionsDoc system.conf; conf = makeOptionsDoc system.conf;
paths = builtins.readDir ../modules/programs; paths = builtins.readDir ../modules/programs;
names = lib.lists.remove "default" ( names = lib.lists.remove "default" (
@ -25,18 +24,18 @@ let
docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods));
summary = lib.strings.concatStringsSep " " (map summaryAppend names); summary = lib.strings.concatStringsSep " " (map summaryAppend names);
in in
pkgs.stdenvNoCC.mkDerivation { pkgs.stdenvNoCC.mkDerivation {
name = "dashNix-book"; name = "dashNix-book";
src = ./.; src = ./.;
patchPhase = '' patchPhase = ''
sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md
${docs} ${docs}
echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md
${summary} ${summary}
''; '';
buildPhase = '' buildPhase = ''
${pkgs.mdbook}/bin/mdbook build --dest-dir $out ${pkgs.mdbook}/bin/mdbook build --dest-dir $out
''; '';
} }

View file

@ -21,11 +21,9 @@
}; };
}; };
outputs = outputs = {...} @ inputs: {
{ ... }@inputs: nixosConfigurations = inputs.dashNix.dashNixLib.build_systems {root = ./.;};
{ };
nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; };
};
nixConfig = { nixConfig = {
builders-use-substitutes = true; builders-use-substitutes = true;

View file

@ -1,5 +1,4 @@
{ config, ... }: {config, ...}: {
{
# variables for system # variables for system
# TODO important changes # TODO important changes
conf = { conf = {

112
flake.nix
View file

@ -48,66 +48,62 @@
}; };
}; };
outputs = outputs = {self, ...} @ inputs: let
{ self, ... }@inputs: permittedPackages = [
let "olm-3.2.16"
permittedPackages = [ # well done dotnet...
"olm-3.2.16" # this is just for omnisharp
# well done dotnet... "dotnet-core-combined"
# this is just for omnisharp "dotnet-wrapped-combined"
"dotnet-core-combined" "dotnet-combined"
"dotnet-wrapped-combined" "dotnet-sdk-6.0.428"
"dotnet-combined" "dotnet-sdk-wrapped-6.0.428"
"dotnet-sdk-6.0.428" "dotnet-sdk-6.0.136"
"dotnet-sdk-wrapped-6.0.428" "dotnet-sdk-wrapped-6.0.136"
"dotnet-sdk-6.0.136" "dotnet-sdk-7.0.120"
"dotnet-sdk-wrapped-6.0.136" "dotnet-sdk-wrapped-7.0.120"
"dotnet-sdk-7.0.120" "dotnet-sdk-7.0.410"
"dotnet-sdk-wrapped-7.0.120" "dotnet-sdk-wrapped-7.0.410"
"dotnet-sdk-7.0.410" "jitsi-meet-1.0.8043"
"dotnet-sdk-wrapped-7.0.410" "nextcloud-27.1.11"
"jitsi-meet-1.0.8043" ];
"nextcloud-27.1.11" stable = import inputs.stable {
]; system = "x86_64-linux";
stable = import inputs.stable { config = {
system = "x86_64-linux"; allowUnfree = true;
config = { permittedInsecurePackages = permittedPackages;
allowUnfree = true;
allowBroken = true;
permittedInsecurePackages = permittedPackages;
};
}; };
pkgs = import inputs.nixpkgs {
system = "x86_64-linux";
config = {
allowUnsupportedSystem = true;
permittedInsecurePackages = permittedPackages;
allowBroken = true;
allowUnfree = true;
};
};
in
rec {
dashNixLib = import ./lib {
inherit
self
inputs
pkgs
stable
;
lib = inputs.nixpkgs.lib;
};
docs = import ./docs {
inherit inputs pkgs stable;
lib = inputs.nixpkgs.lib;
build_systems = dashNixLib.build_systems;
};
dashNixInputs = inputs;
stablePkgs = stable;
unstablePkgs = pkgs;
modules = ./modules;
iso = dashNixLib.buildIso.config.system.build.isoImage;
}; };
pkgs = import inputs.nixpkgs {
system = "x86_64-linux";
config = {
allowUnsupportedSystem = true;
permittedInsecurePackages = permittedPackages;
allowBroken = true;
allowUnfree = true;
};
};
in rec {
dashNixLib = import ./lib {
inherit
self
inputs
pkgs
stable
;
lib = inputs.nixpkgs.lib;
};
docs = import ./docs {
inherit inputs pkgs stable;
lib = inputs.nixpkgs.lib;
build_systems = dashNixLib.build_systems;
};
dashNixInputs = inputs;
stablePkgs = stable;
unstablePkgs = pkgs;
modules = ./modules;
iso = dashNixLib.buildIso.config.system.build.isoImage;
};
nixConfig = { nixConfig = {
builders-use-substitutes = true; builders-use-substitutes = true;

View file

@ -2,11 +2,9 @@
config, config,
lib, lib,
... ...
}: }: let
let
username = config.conf.username; username = config.conf.username;
in in {
{
manual = { manual = {
html.enable = false; html.enable = false;
json.enable = false; json.enable = false;
@ -18,7 +16,7 @@ in
home = { home = {
username = username; username = username;
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
sessionPath = [ "$HOME/.cargo/bin" ]; sessionPath = ["$HOME/.cargo/bin"];
enableNixpkgsReleaseCheck = false; enableNixpkgsReleaseCheck = false;
sessionVariables = { sessionVariables = {

View file

@ -1,22 +1,21 @@
{ {
inputs,
pkgs,
config,
lib,
mod,
additionalHomeConfig, additionalHomeConfig,
homeMods,
additionalHomeMods, additionalHomeMods,
additionalInputs, additionalInputs,
config,
homeMods,
inputs,
lib,
mod,
pkgs,
root, root,
... ...
}: }: {
{
xdg = { xdg = {
portal.config.common.default = "*"; portal.config.common.default = "*";
portal = { portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; extraPortals = [pkgs.xdg-desktop-portal-gtk];
}; };
}; };
home-manager = { home-manager = {

View file

@ -4,53 +4,56 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
username = config.mods.nextcloud.username; username = config.mods.nextcloud.username;
password = password =
if (config.sops.secrets ? nextcloud.path) then config.sops.secrets.nextcloud.path else ""; if (config.sops.secrets ? nextcloud.path)
then config.sops.secrets.nextcloud.path
else "";
url = config.mods.nextcloud.url; url = config.mods.nextcloud.url;
synclist = config.mods.nextcloud.synclist; synclist = config.mods.nextcloud.synclist;
in in
lib.mkIf config.mods.nextcloud.enable { lib.mkIf config.mods.nextcloud.enable {
systemd.user = { systemd.user = {
services = ( services = (
builtins.listToAttrs ( builtins.listToAttrs (
map (opts: { map (opts: {
name = "${opts.name}"; name = "${opts.name}";
value = { value = {
Unit = { Unit = {
Description = "Auto sync Nextcloud"; Description = "Auto sync Nextcloud";
After = "network-online.target"; After = "network-online.target";
};
Service = {
Type = "simple";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
TimeoutStopSec = "180";
KillMode = "process";
KillSignal = "SIGINT";
};
Install.WantedBy = ["multi-user.target"];
}; };
Service = { })
Type = "simple"; synclist
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'"; )
TimeoutStopSec = "180"; );
KillMode = "process"; timers = (
KillSignal = "SIGINT"; builtins.listToAttrs (
map (opts: {
name = "${opts.name}";
value = {
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
Timer.OnBootSec = "1min";
Timer.OnUnitActiveSec = "60min";
Install.WantedBy = [
"multi-user.target"
"timers.target"
];
}; };
Install.WantedBy = [ "multi-user.target" ]; })
}; synclist
}) synclist )
) );
); startServices = true;
timers = ( };
builtins.listToAttrs ( }
map (opts: {
name = "${opts.name}";
value = {
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
Timer.OnBootSec = "1min";
Timer.OnUnitActiveSec = "60min";
Install.WantedBy = [
"multi-user.target"
"timers.target"
];
};
}) synclist
)
);
startServices = true;
};
}

View file

@ -6,19 +6,16 @@
lib, lib,
inputs, inputs,
... ...
}: }: let
let base16 = pkgs.callPackage inputs.base16.lib {};
base16 = pkgs.callPackage inputs.base16.lib { };
baseScheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); baseScheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
power = power = number: powerIndex:
number: powerIndex: if powerIndex == 1
if powerIndex == 1 then then number
number else if powerIndex == 0
else if powerIndex == 0 then then 1
1 else number * power number (powerIndex - 1);
else
number * power number (powerIndex - 1);
lookupTable = powerIndex: { lookupTable = powerIndex: {
"0" = 0 * (power 16 powerIndex); "0" = 0 * (power 16 powerIndex);
@ -39,16 +36,14 @@ let
"f" = 15 * (power 16 powerIndex); "f" = 15 * (power 16 powerIndex);
}; };
convertHex = convertHex = hexChars:
hexChars:
recombineColors [ recombineColors [
(convertColor (lib.lists.take 2 hexChars)) (convertColor (lib.lists.take 2 hexChars))
(convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars))) (convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars)))
(convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars))) (convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars)))
]; ];
convertColor = convertColor = color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)};
color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)};
recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors; recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors;
scheme = { scheme = {
@ -101,9 +96,7 @@ let
convertHex (lib.strings.stringToCharacters baseScheme.base0F) convertHex (lib.strings.stringToCharacters baseScheme.base0F)
); );
}; };
in {
in
{
# temp # temp
# crust -> surface1 # crust -> surface1
# subtext0 -> surface2 # subtext0 -> surface2

View file

@ -3,16 +3,14 @@
inputs, inputs,
pkgs, pkgs,
... ...
}: }: let
let
# at time of using this here, stylix might not be evaluated yet # at time of using this here, stylix might not be evaluated yet
# hence ensure it is by using base16 mkSchemeAttrs # hence ensure it is by using base16 mkSchemeAttrs
base16 = pkgs.callPackage inputs.base16.lib { }; base16 = pkgs.callPackage inputs.base16.lib {};
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
in in {
{
xdg.configFile."oxiced/theme.toml" = { xdg.configFile."oxiced/theme.toml" = {
source = (pkgs.formats.toml { }).generate "oxiced" { source = (pkgs.formats.toml {}).generate "oxiced" {
name = scheme.scheme; name = scheme.scheme;
base00 = scheme.base00; base00 = scheme.base00;
base01 = scheme.base01; base01 = scheme.base01;

View file

@ -4,23 +4,25 @@
pkgs, pkgs,
lib, lib,
... ...
}: }: let
let
username = config.conf.username; username = config.conf.username;
# at time of using this here, stylix might not be evaluated yet # at time of using this here, stylix might not be evaluated yet
# hence ensure it is by using base16 mkSchemeAttrs # hence ensure it is by using base16 mkSchemeAttrs
base16 = pkgs.callPackage inputs.base16.lib { }; base16 = pkgs.callPackage inputs.base16.lib {};
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
# active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5
# disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
# inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
color = '' color = ''
[ColorScheme] [ColorScheme]
active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
''; '';
qss = '' qss = ''
QTabBar::tab:selected { QTabBar::tab:selected {
color: palette(highlight); color: palette(highlight);
} }
@ -28,33 +30,7 @@ let
border: none; border: none;
} }
''; '';
in {
## test
#cfg = config.stylix.targets.qt;
kvconfig = config.lib.stylix.colors {
template = ./kvconfig.mustache;
extension = ".kvconfig";
};
svg = config.lib.stylix.colors {
template = ./kvantum-svg.mustache;
extension = "svg";
};
kvantumPackage = pkgs.runCommandLocal "base16-kvantum" { } ''
directory="$out/share/Kvantum/Base16Kvantum"
mkdir --parents "$directory"
cat ${kvconfig} >>"$directory/Base16Kvantum.kvconfig"
cat ${svg} >>"$directory/Base16Kvantum.svg"
'';
xdg.configFile."Kvantum/kvantum.kvconfig".source =
(pkgs.formats.ini { }).generate "kvantum.kvconfig"
{
General.theme = "Base16Kvantum";
};
xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum";
in
{
xdg.configFile."qt5ct/colors/tokyonight.conf" = { xdg.configFile."qt5ct/colors/tokyonight.conf" = {
text = "${color}"; text = "${color}";
}; };
@ -64,34 +40,18 @@ in
xdg.configFile."qt5ct/qss/tab.qss" = { xdg.configFile."qt5ct/qss/tab.qss" = {
text = "${qss}"; text = "${qss}";
}; };
stylix.targets.qt = {
enable = false;
};
qt = { qt = {
enable = true; enable = true;
style.package = pkgs.libsForQt5.breeze-qt5; style.package = pkgs.libsForQt5.breeze-qt5;
style.name = lib.mkForce "breeze-dark"; style.name = lib.mkForce "breeze-dark";
}; };
# ## test
# xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" {
# General.theme = "Base16Kvantum";
# };
# xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum";
# xdg.configFile."qt5ct/qt5ct.conf".text = ''
# [Appearance]
# style=kvantum
# '';
# #icon_theme=${cfg.iconThemeName}
# xdg.configFile."qt6ct/qt6ct.conf".text = ''
# [Appearance]
# style=kvantum
# '';
# #icon_theme=${cfg.iconThemeName}
xdg.configFile."qt5ct/qt5ct.conf" = { xdg.configFile."qt5ct/qt5ct.conf" = {
text = '' text = ''
[Appearance] [Appearance]
color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf
custom_palette=true custom_palette=true
@ -128,6 +88,7 @@ in
}; };
xdg.configFile."qt6ct/qt6ct.conf" = { xdg.configFile."qt6ct/qt6ct.conf" = {
text = '' text = ''
[Appearance] [Appearance]
color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf
custom_palette=true custom_palette=true

View file

@ -4,10 +4,8 @@
modulesPath, modulesPath,
self, self,
... ...
}: }: {
{ imports = ["${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"];
imports = [ "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" ];
nixpkgs.hostPlatform = { nixpkgs.hostPlatform = {
system = "x86_64-linux"; system = "x86_64-linux";
}; };

View file

@ -1,32 +1,31 @@
{ {
inputs, inputs,
lib,
pkgs, pkgs,
self, self,
stable, stable,
lib,
... ...
}: }: {
{
/* /*
* *
# build_systems # build_systems
Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well.
A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration.
The second parameter is the root of your configuration, which should be ./. in most cases. The second parameter is the root of your configuration, which should be ./. in most cases.
`root` `root`
: the root path of your configuration : the root path of your configuration
# Example usage # Example usage
:::{.example} :::{.example}
```nix ```nix
nixosConfigurations = build_systems { root = ./.; }; nixosConfigurations = build_systems { root = ./.; };
``` ```
::: :::
*/ */
# let # let
# paths = builtins.readDir ; # paths = builtins.readDir ;
@ -35,89 +34,102 @@
# ); # );
# in # in
build_systems = build_systems = {
{ root,
root, additionalMods ? {
additionalMods ? { nixos = [];
nixos = [ ]; home = [];
home = [ ]; },
}, mods ? {
mods ? { nixos = [
nixos = [ inputs.home-manager.nixosModules.home-manager
inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix
inputs.stylix.nixosModules.stylix ../base
../base ../home
../home ../modules
../modules ];
]; home = [
home = [ inputs.anyrun.homeManagerModules.default
inputs.anyrun.homeManagerModules.default inputs.ironbar.homeManagerModules.default
inputs.ironbar.homeManagerModules.default inputs.oxicalc.homeManagerModules.default
inputs.oxicalc.homeManagerModules.default inputs.oxishut.homeManagerModules.default
inputs.oxishut.homeManagerModules.default inputs.oxinoti.homeManagerModules.default
inputs.oxinoti.homeManagerModules.default inputs.oxidash.homeManagerModules.default
inputs.oxidash.homeManagerModules.default inputs.oxipaste.homeManagerModules.default
inputs.oxipaste.homeManagerModules.default inputs.hyprdock.homeManagerModules.default
inputs.hyprdock.homeManagerModules.default inputs.hyprland.homeManagerModules.default
inputs.hyprland.homeManagerModules.default inputs.reset.homeManagerModules.default
inputs.reset.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak
inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops
inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim
inputs.dashvim.homeManagerModules.dashvim ../modules
../modules ];
]; },
}, additionalInputs ? {},
additionalInputs ? { }, overridePkgs ? false,
overridePkgs ? false, ...
... }:
}:
builtins.listToAttrs ( builtins.listToAttrs (
map map
(name: { (name: {
name = name; name = name;
value = value = let
let mod = root + /hosts/${name}/configuration.nix;
mod = root + /hosts/${name}/configuration.nix; additionalNixosConfig = root + /hosts/${name}/hardware.nix;
additionalNixosConfig = root + /hosts/${name}/hardware.nix; additionalHomeConfig = root + /hosts/${name}/home.nix;
additionalHomeConfig = root + /hosts/${name}/home.nix; args = {
in inherit
inputs.nixpkgs.lib.nixosSystem { self
specialArgs = { inputs
inherit mod
self additionalHomeConfig
inputs root
mod ;
additionalHomeConfig pkgs = lib.mkForce (
root if overridePkgs
; then stable
pkgs = if overridePkgs then stable else pkgs; else pkgs
alternativePkgs = if overridePkgs then pkgs else stable; );
hostName = name; alternativePkgs =
homeMods = mods.home; if overridePkgs
additionalHomeMods = additionalMods.home; then pkgs
additionalInputs = additionalInputs; else stable;
}; hostName = name;
modules = homeMods = mods.home;
[ mod ] additionalHomeMods = additionalMods.home;
++ mods.nixos additionalInputs = additionalInputs;
++ additionalMods.nixos };
++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig in
++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; inputs.nixpkgs.lib.nixosSystem {
}; modules =
}) [
( {_module.args = args;}
lib.lists.remove "" ( mod
lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( ]
builtins.readDir (root + /hosts) ++ mods.nixos
) ++ additionalMods.nixos
++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig
++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod;
};
})
(
lib.lists.remove "" (
lib.attrsets.mapAttrsToList (name: fType:
if fType == "directory"
then name
else "") (
builtins.readDir (root + /hosts)
) )
) )
)
); );
buildIso = inputs.nixpkgs.lib.nixosSystem { buildIso = inputs.nixpkgs.lib.nixosSystem {
specialArgs = { specialArgs = {
inherit self inputs pkgs; inherit self inputs pkgs;
}; };
modules = [ ../iso/configuration.nix ]; modules = [
../iso/configuration.nix
];
}; };
} }

View file

@ -4,20 +4,16 @@
pkgs, pkgs,
options, options,
... ...
}: }: {
{
options.conf = { options.conf = {
system = lib.mkOption { system = lib.mkOption {
default = "x86_64-linux"; default = "x86_64-linux";
# no fisherprice unix support # no fisherprice unix support
type = type = with lib.types; (enum [
with lib.types; "x86_64-linux"
(enum [ "aarch64-linux"
"x86_64-linux" "aarch64-linux-android"
"aarch64-linux" ]);
"aarch64-linux-android"
]);
example = "aarch64-linux"; example = "aarch64-linux";
description = '' description = ''
System architecture. System architecture.
@ -27,12 +23,10 @@
cpu = lib.mkOption { cpu = lib.mkOption {
# TODO: how to enable arm? # TODO: how to enable arm?
default = "amd"; default = "amd";
type = type = with lib.types; (enum [
with lib.types; "amd"
(enum [ "intel"
"amd" ]);
"intel"
]);
example = "intel"; example = "intel";
description = '' description = ''
cpu microcode. cpu microcode.
@ -43,7 +37,7 @@
default = [ default = [
"video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
additional kernelParams passed to bootloader additional kernelParams passed to bootloader
@ -79,7 +73,7 @@
ironbar = { ironbar = {
modules = lib.mkOption { modules = lib.mkOption {
default = [ ]; default = [];
example = [ example = [
{ {
type = "upower"; type = "upower";
@ -94,8 +88,8 @@
}; };
bootParams = lib.mkOption { bootParams = lib.mkOption {
default = [ ]; default = [];
example = [ "resume=something" ]; example = ["resume=something"];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
Boot params Boot params
@ -175,7 +169,6 @@
Home state version Home state version
''; '';
}; };
}; };
config = config =

View file

@ -3,9 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods = { options.mods = {
acpid.enable = lib.mkOption { acpid.enable = lib.mkOption {
default = false; default = false;
@ -18,6 +16,6 @@
}; };
config = lib.mkIf config.mods.acpid.enable ( config = lib.mkIf config.mods.acpid.enable (
lib.optionalAttrs (options ? virtualisation.virtualbox.host) { services.acpid.enable = true; } lib.optionalAttrs (options ? virtualisation.virtualbox.host) {services.acpid.enable = true;}
); );
} }

View file

@ -3,10 +3,8 @@
lib, lib,
options, options,
pkgs, pkgs,
inputs,
... ...
}: }: {
{
options.mods = { options.mods = {
basePackages = { basePackages = {
enable = lib.mkOption { enable = lib.mkOption {
@ -18,8 +16,8 @@
''; '';
}; };
additionalPackages = lib.mkOption { additionalPackages = lib.mkOption {
default = [ ]; default = [];
example = [ pkgs.openssl ]; example = [pkgs.openssl];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Additional packages to install. Additional packages to install.
@ -27,16 +25,16 @@
''; '';
}; };
specialPrograms = lib.mkOption { specialPrograms = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special program configuration to be added which require programs.something notation. special program configuration to be added which require programs.something notation.
''; '';
}; };
specialServices = lib.mkOption { specialServices = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special services configuration to be added which require an services.something notation. special services configuration to be added which require an services.something notation.
@ -47,42 +45,43 @@
config = lib.optionalAttrs (options ? environment.systemPackages) { config = lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = environment.systemPackages =
if config.mods.basePackages.enable then if config.mods.basePackages.enable
then
with pkgs; with pkgs;
[ [
adwaita-icon-theme adwaita-icon-theme
dbus dbus
dconf dconf
direnv direnv
glib glib
gnome.nixos-gsettings-overrides gnome.nixos-gsettings-overrides
gsettings-desktop-schemas gsettings-desktop-schemas
gtk-layer-shell gtk-layer-shell
gtk3 gtk3
gtk4 gtk4
gtk4-layer-shell gtk4-layer-shell
hicolor-icon-theme hicolor-icon-theme
icon-library icon-library
kdePackages.breeze-icons kdePackages.breeze-icons
kdePackages.breeze kdePackages.breeze
libsForQt5.breeze-qt5 libsForQt5.breeze-qt5
kdePackages.qtstyleplugin-kvantum kdePackages.qtstyleplugin-kvantum
libsForQt5.qtstyleplugin-kvantum libsForQt5.qtstyleplugin-kvantum
libadwaita libadwaita
libxkbcommon libxkbcommon
nixfmt-rfc-style alejandra
openssl openssl
seahorse seahorse
upower upower
xorg.xkbutils xorg.xkbutils
] ]
++ config.mods.basePackages.additionalPackages ++ config.mods.basePackages.additionalPackages
else else config.mods.basePackages.additionalPackages;
config.mods.basePackages.additionalPackages;
gtk.iconCache.enable = false; gtk.iconCache.enable = false;
services = services =
if config.mods.basePackages.enable then if config.mods.basePackages.enable
then
{ {
upower.enable = true; upower.enable = true;
dbus = { dbus = {
@ -95,11 +94,11 @@
}; };
} }
// config.mods.basePackages.specialServices // config.mods.basePackages.specialServices
else else config.mods.basePackages.specialServices;
config.mods.basePackages.specialServices;
programs = programs =
if config.mods.basePackages.enable then if config.mods.basePackages.enable
then
{ {
nix-ld = { nix-ld = {
enable = true; enable = true;
@ -121,8 +120,6 @@
gnupg.agent.enable = true; gnupg.agent.enable = true;
} }
// config.mods.basePackages.specialPrograms // config.mods.basePackages.specialPrograms
else else config.mods.basePackages.specialPrograms;
config.mods.basePackages.specialPrograms;
}; };
} }

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods = { options.mods = {
bluetooth.enable = lib.mkOption { bluetooth.enable = lib.mkOption {
default = false; default = false;

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.browser.brave = { options.mods.browser.brave = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -17,7 +16,7 @@
}; };
config = lib.mkIf config.mods.browser.brave.enable ( config = lib.mkIf config.mods.browser.brave.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ brave ]; home.packages = with pkgs; [brave];
} }
); );
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.browser.chromium = { options.mods.browser.chromium = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -17,7 +16,7 @@
}; };
config = lib.mkIf config.mods.browser.chromium.enable ( config = lib.mkIf config.mods.browser.chromium.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ chromium ]; home.packages = with pkgs; [chromium];
} }
); );
} }

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.browser.firefox = { options.mods.browser.firefox = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -43,7 +42,7 @@
SkipOnboarding = true; SkipOnboarding = true;
}; };
}; };
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information.";
}; };

View file

@ -5,8 +5,7 @@
system, system,
inputs, inputs,
... ...
}: }: {
{
options.mods.browser.zen = { options.mods.browser.zen = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -18,7 +17,7 @@
}; };
config = lib.mkIf config.mods.browser.zen.enable ( config = lib.mkIf config.mods.browser.zen.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = [ inputs.zen-browser.packages."${system}".default ]; home.packages = [inputs.zen-browser.packages."${system}".default];
} }
); );
} }

View file

@ -4,8 +4,7 @@
pkgs, pkgs,
options, options,
... ...
}: }: {
{
options.mods = { options.mods = {
coding = { coding = {
enable = lib.mkOption { enable = lib.mkOption {
@ -42,8 +41,8 @@
''; '';
}; };
extensions = lib.mkOption { extensions = lib.mkOption {
default = [ ]; default = [];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Extensions to be installed"; description = "Extensions to be installed";
}; };
@ -55,8 +54,8 @@
description = "Use default base packages (only additionalPackages are installed if false)"; description = "Use default base packages (only additionalPackages are installed if false)";
}; };
additionalPackages = lib.mkOption { additionalPackages = lib.mkOption {
default = [ ]; default = [];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Additional packages to be installed"; description = "Additional packages to be installed";
}; };
@ -76,7 +75,7 @@
ghc ghc
haskellPackages.haskell-language-server haskellPackages.haskell-language-server
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
haskell packages haskell packages
@ -98,7 +97,7 @@
tinymist tinymist
ltex-ls ltex-ls
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
typst packages typst packages
@ -119,7 +118,7 @@
go go
gopls gopls
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Go packages Go packages
@ -136,8 +135,8 @@
''; '';
}; };
packages = lib.mkOption { packages = lib.mkOption {
default = with pkgs; [ rustup ]; default = with pkgs; [rustup];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Rust packages Rust packages
@ -161,7 +160,7 @@
nodePackages.typescript-language-server nodePackages.typescript-language-server
nodePackages.prettier nodePackages.prettier
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
TS/JS packages TS/JS packages
@ -182,7 +181,7 @@
zig zig
zls zls
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
zig packages zig packages
@ -205,7 +204,7 @@
jdt-language-server jdt-language-server
temurin-jre-bin temurin-jre-bin
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Java packages Java packages
@ -232,7 +231,7 @@
fsharp fsharp
#fsautocomplete #fsautocomplete
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
C#/F# packages C#/F# packages
@ -255,7 +254,7 @@
gcc gcc
clang-tools clang-tools
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
C/C++ packages C/C++ packages
@ -278,7 +277,7 @@
python312Packages.python-lsp-ruff python312Packages.python-lsp-ruff
python312Packages.python-lsp-black python312Packages.python-lsp-black
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
python packages python packages
@ -304,7 +303,7 @@
#json #json
jq jq
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
packages for said filetypes packages for said filetypes
@ -325,7 +324,7 @@
bash-language-server bash-language-server
shfmt shfmt
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
bash packages bash packages
@ -347,7 +346,7 @@
tailwindcss-language-server tailwindcss-language-server
# html-tidy # html-tidy
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
html/css packages html/css packages
@ -368,7 +367,7 @@
nodePackages.sql-formatter nodePackages.sql-formatter
sqls sqls
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
sql packages sql packages
@ -385,8 +384,8 @@
''; '';
}; };
packages = lib.mkOption { packages = lib.mkOption {
default = with pkgs; [ gleam ]; default = with pkgs; [gleam];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
gleam packages gleam packages
@ -403,8 +402,8 @@
''; '';
}; };
packages = lib.mkOption { packages = lib.mkOption {
default = with pkgs; [ asm-lsp ]; default = with pkgs; [asm-lsp];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
assembly packages assembly packages
@ -415,23 +414,22 @@
}; };
}; };
config = config = let
let basePackages = with pkgs; [
basePackages = with pkgs; [ gitui
gitui meson
meson ninja
ninja tree-sitter
tree-sitter unzip
unzip pkg-config
pkg-config sqlite
sqlite plantuml
plantuml d-spy
d-spy tmux
tmux tmate
tmate ];
]; font_family = "${config.mods.stylix.fonts.monospace.name}";
font_family = "${config.mods.stylix.fonts.monospace.name}"; in
in
lib.mkIf config.mods.coding.enable ( lib.mkIf config.mods.coding.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
programs.dashvim = lib.mkIf config.mods.coding.dashvim { programs.dashvim = lib.mkIf config.mods.coding.dashvim {
@ -444,7 +442,7 @@
extensions = config.mods.coding.vscodium.extensions; extensions = config.mods.coding.vscodium.extensions;
}; };
xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim {
source = (pkgs.formats.toml { }).generate "neovide" { source = (pkgs.formats.toml {}).generate "neovide" {
font = { font = {
size = 12; size = 12;
normal = { normal = {
@ -466,8 +464,7 @@
}; };
}; };
}; };
home.packages = home.packages = with pkgs;
with pkgs;
[ [
(lib.mkIf config.mods.coding.dashvim neovide) (lib.mkIf config.mods.coding.dashvim neovide)
(lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox)

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.containers = { options.mods.containers = {
variant = lib.mkOption { variant = lib.mkOption {
default = ""; default = "";
@ -22,7 +21,7 @@
podman-tui podman-tui
podman-compose podman-compose
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Podman packages"; description = "Podman packages";
}; };
@ -30,7 +29,7 @@
default = with pkgs; [ default = with pkgs; [
docker-compose docker-compose
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Docker packages"; description = "Docker packages";
}; };
@ -38,7 +37,7 @@
default = with pkgs; [ default = with pkgs; [
dive dive
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Container packages"; description = "Container packages";
}; };
@ -47,33 +46,35 @@
lib.optionalAttrs (options ? environment.systemPackages) { lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = environment.systemPackages =
(lib.lists.optionals ( (lib.lists.optionals (
config.mods.containers.variant == "podman" config.mods.containers.variant == "podman"
) config.mods.containers.podmanPackages) )
config.mods.containers.podmanPackages)
++ (lib.lists.optionals ( ++ (lib.lists.optionals (
config.mods.containers.variant == "docker" config.mods.containers.variant == "docker"
) config.mods.containers.dockerPackages) )
config.mods.containers.dockerPackages)
++ (lib.lists.optionals ( ++ (lib.lists.optionals (
config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker"
) config.mods.containers.combinedPackages); )
config.mods.containers.combinedPackages);
virtualisation = virtualisation =
if (config.mods.containers.variant == "podman") then if (config.mods.containers.variant == "podman")
{ then {
containers.enable = true; containers.enable = true;
podman = { podman = {
enable = true; enable = true;
dockerCompat = true; dockerCompat = true;
defaultNetwork.settings.dns_enabled = true; defaultNetwork.settings.dns_enabled = true;
}; };
} }
else if (config.mods.containers.variant == "docker") then else if (config.mods.containers.variant == "docker")
{ then {
containers.enable = true; containers.enable = true;
docker = { docker = {
enable = true; enable = true;
}; };
} }
else else {};
{ };
} }
); );
} }

View file

@ -3,9 +3,7 @@
config, config,
options, options,
... ...
}: }: let
let
driveModule = lib.types.submodule { driveModule = lib.types.submodule {
options = { options = {
name = lib.mkOption { name = lib.mkOption {
@ -20,7 +18,7 @@ let
drive = lib.mkOption { drive = lib.mkOption {
type = lib.types.attrsOf lib.types.anything; type = lib.types.attrsOf lib.types.anything;
description = "The attrs of the drive"; description = "The attrs of the drive";
default = { }; default = {};
example = { example = {
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
@ -33,8 +31,7 @@ let
}; };
}; };
}; };
in in {
{
options.mods = { options.mods = {
drives = { drives = {
useSwap = { useSwap = {
@ -59,7 +56,6 @@ in
}; };
extraDrives = lib.mkOption { extraDrives = lib.mkOption {
default = [ default = [
]; ];
example = [ example = [
{ {
@ -90,12 +86,15 @@ in
fileSystems = fileSystems =
builtins.listToAttrs ( builtins.listToAttrs (
map ( map (
{ name, drive }:
{ {
name,
drive,
}: {
name = "/" + name; name = "/" + name;
value = drive; value = drive;
} }
) config.mods.drives.extraDrives )
config.mods.drives.extraDrives
) )
// (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
"/" = { "/" = {
@ -131,7 +130,7 @@ in
}; };
# TODO make this convert to choice of drives -> thanks to funny types this doesn't work... # TODO make this convert to choice of drives -> thanks to funny types this doesn't work...
swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ swapDevices = lib.mkIf config.mods.drives.useSwap.enable [
{ device = "/dev/disk/by-label/SWAP"; } {device = "/dev/disk/by-label/SWAP";}
]; ];
} }
); );

View file

@ -5,12 +5,10 @@
config, config,
options, options,
... ...
}: }: let
let base16 = pkgs.callPackage inputs.base16.lib {};
base16 = pkgs.callPackage inputs.base16.lib { }; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); in {
in
{
options.mods.fish = { options.mods.fish = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -36,7 +34,8 @@ in
programs.fish = { programs.fish = {
enable = true; enable = true;
shellInit = shellInit =
if config.mods.fish.useDefaultConfig then if config.mods.fish.useDefaultConfig
then
'' ''
if status is-interactive if status is-interactive
# Commands to run in interactive sessions can go here # Commands to run in interactive sessions can go here
@ -182,8 +181,7 @@ in
direnv hook fish | source direnv hook fish | source
'' ''
+ config.mods.fish.additionalConfig + config.mods.fish.additionalConfig
else else config.mods.fish.additionalConfig;
config.mods.fish.additionalConfig;
}; };
} }
); );

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.flatpak = { options.mods.flatpak = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -14,15 +13,15 @@
description = "Enables the flatpak package manager"; description = "Enables the flatpak package manager";
}; };
additional_packages = lib.mkOption { additional_packages = lib.mkOption {
default = [ ]; default = [];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Flatpak packages"; description = "Flatpak packages";
}; };
}; };
config = lib.mkIf config.mods.flatpak.enable ( config = lib.mkIf config.mods.flatpak.enable (
lib.optionalAttrs (options ? services.flatpak.remote) { lib.optionalAttrs (options ? services.flatpak.remote) {
environment.systemPackages = [ pkgs.flatpak ]; environment.systemPackages = [pkgs.flatpak];
services.flatpak.remotes = lib.mkOptionDefault [ services.flatpak.remotes = lib.mkOptionDefault [
{ {
name = "flathub-stable"; name = "flathub-stable";
@ -32,11 +31,13 @@
services.flatpak.uninstallUnmanaged = true; services.flatpak.uninstallUnmanaged = true;
} }
// lib.optionalAttrs (options ? services.flatpak.packages) { // lib.optionalAttrs (options ? services.flatpak.packages) {
services.flatpak.packages = [ services.flatpak.packages =
# fallback if necessary, but generally avoided as nix is superior :) [
# default flatseal installation since flatpak permissions are totally not a broken idea # fallback if necessary, but generally avoided as nix is superior :)
"com.github.tchx84.Flatseal" # default flatseal installation since flatpak permissions are totally not a broken idea
] ++ config.mods.flatpak.additional_packages; "com.github.tchx84.Flatseal"
]
++ config.mods.flatpak.additional_packages;
} }
); );
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.gaming = { options.mods.gaming = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -24,7 +23,7 @@
#heroic #heroic
mangohud mangohud
]; ];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Install gaming related packages"; description = "Install gaming related packages";
}; };

View file

@ -3,8 +3,7 @@
options, options,
config, config,
... ...
}: }: {
{
options.mods.gdm = { options.mods.gdm = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -13,8 +12,8 @@
description = "Enables the gdm displayManager"; description = "Enables the gdm displayManager";
}; };
extraOptions = lib.mkOption { extraOptions = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the gnome config"; description = "Extra options to be applied to the gnome config";
}; };

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.git = { options.mods.git = {
username = lib.mkOption { username = lib.mkOption {
default = "DashieTM"; default = "DashieTM";
@ -38,25 +37,22 @@
default = '' default = ''
Host github.com Host github.com
${ ${
if (config ? sops.secrets && config.sops.secrets ? hub.path) then if (config ? sops.secrets && config.sops.secrets ? hub.path)
"IdentityFile ${config.sops.secrets.hub.path}" then "IdentityFile ${config.sops.secrets.hub.path}"
else else ""
"" }
}
Host gitlab.com Host gitlab.com
${ ${
if (config ? sops.secrets && config.sops.secrets ? lab.path) then if (config ? sops.secrets && config.sops.secrets ? lab.path)
"IdentityFile ${config.sops.secrets.lab.path}" then "IdentityFile ${config.sops.secrets.lab.path}"
else else ""
"" }
}
Host dashie.org Host dashie.org
${ ${
if (config ? sops.secrets && config.sops.secrets ? dashie.path) then if (config ? sops.secrets && config.sops.secrets ? dashie.path)
"IdentityFile ${config.sops.secrets.dashie.path}" then "IdentityFile ${config.sops.secrets.dashie.path}"
else else ""
"" }
}
''; '';
example = ""; example = "";
type = lib.types.lines; type = lib.types.lines;

View file

@ -4,8 +4,7 @@
config, config,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.gnome = { options.mods.gnome = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -20,27 +19,26 @@
description = "Use default options provided by module. If disabled, will only apply extraOptions."; description = "Use default options provided by module. If disabled, will only apply extraOptions.";
}; };
extraOptions = lib.mkOption { extraOptions = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the gnome config"; description = "Extra options to be applied to the gnome config";
}; };
extraDconf = lib.mkOption { extraDconf = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the dconf config"; description = "Extra options to be applied to the dconf config";
}; };
}; };
config = config = let
let defaultExtensions = with pkgs.gnomeExtensions; [
defaultExtensions = with pkgs.gnomeExtensions; [ blur-my-shell
blur-my-shell dash-to-dock
dash-to-dock tray-icons-reloaded
tray-icons-reloaded ];
]; in
in
lib.mkIf config.mods.gnome.enable ( lib.mkIf config.mods.gnome.enable (
lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) ( lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) (
{ {
@ -49,7 +47,7 @@
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
}; };
} }
// lib.mkIf config.mods.gnome.useDefaultOptions { environment.systemPackages = defaultExtensions; } // lib.mkIf config.mods.gnome.useDefaultOptions {environment.systemPackages = defaultExtensions;}
// { // {
services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions; services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions;
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods = { options.mods = {
gnomeServices.enable = lib.mkOption { gnomeServices.enable = lib.mkOption {
default = true; default = true;
@ -66,15 +65,14 @@
}; };
}; };
home = { home = {
packages = packages = let
let packages = with pkgs; [
packages = with pkgs; [ gcr
gcr nautilus
nautilus sushi
sushi nautilus-python
nautilus-python ];
]; in
in
lib.mkIf config.mods.nautilus.enable packages; lib.mkIf config.mods.nautilus.enable packages;
}; };
} }

View file

@ -4,9 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods = { options.mods = {
gpu = { gpu = {
nvidia.enable = lib.mkOption { nvidia.enable = lib.mkOption {
@ -57,35 +55,34 @@
config = config =
(lib.optionalAttrs (options ? hardware.graphics) { (lib.optionalAttrs (options ? hardware.graphics) {
boot = lib.mkIf config.mods.amdgpu.enable { boot = lib.mkIf config.mods.amdgpu.enable {
kernelModules = [ "kvm-amd" ]; kernelModules = ["kvm-amd"];
initrd.kernelModules = [ "amdgpu" ]; initrd.kernelModules = ["amdgpu"];
kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"];
}; };
hardware = { hardware = {
graphics = graphics = let
let amdPackages = [
amdPackages = [ (lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
(lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) (lib.mkIf (
(lib.mkIf (
config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable
) pkgs.intel-media-driver) )
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) pkgs.intel-media-driver)
(lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
(lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau)
]; (lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers)
rocmPackages = [ ];
pkgs.rocmPackages.clr.icd rocmPackages = [
pkgs.rocm-opencl-runtime pkgs.rocmPackages.clr.icd
]; pkgs.rocm-opencl-runtime
in ];
{ in {
enable = true; enable = true;
enable32Bit = lib.mkDefault true; enable32Bit = lib.mkDefault true;
extraPackages = extraPackages =
amdPackages amdPackages
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages);
}; };
}; };
}) })
// lib.optionalAttrs (options ? hardware.graphics) ( // lib.optionalAttrs (options ? hardware.graphics) (
@ -98,7 +95,7 @@
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta; package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = ["nvidia"];
} }
); );
} }

View file

@ -5,8 +5,7 @@
pkgs, pkgs,
options, options,
... ...
}: }: {
{
options.mods = { options.mods = {
greetd = { greetd = {
enable = lib.mkOption { enable = lib.mkOption {
@ -59,8 +58,8 @@
}; };
regreet = { regreet = {
customSettings = lib.mkOption { customSettings = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information. Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information.
@ -70,16 +69,15 @@
}; };
}; };
config = config = let
let username = config.conf.username;
username = config.conf.username; session = {
session = { command = "${
command = "${ lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland
lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland } --config /etc/greetd/hyprgreet.conf";
} --config /etc/greetd/hyprgreet.conf"; user = username;
user = username; };
}; in
in
lib.mkIf config.mods.greetd.enable ( lib.mkIf config.mods.greetd.enable (
lib.optionalAttrs (options ? environment) { lib.optionalAttrs (options ? environment) {
services.xserver.displayManager.session = [ services.xserver.displayManager.session = [
@ -136,8 +134,8 @@
} }
// lib.optionalAttrs (options ? home) { // lib.optionalAttrs (options ? home) {
xdg.configFile."regreet/regreet.toml".source = xdg.configFile."regreet/regreet.toml".source =
(pkgs.formats.toml { }).generate "regreet" (pkgs.formats.toml {}).generate "regreet"
config.mods.greetd.regreet.customSettings; config.mods.greetd.regreet.customSettings;
} }
); );
} }

View file

@ -5,8 +5,7 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
options.mods.homePackages = { options.mods.homePackages = {
useDefaultPackages = lib.mkOption { useDefaultPackages = lib.mkOption {
default = true; default = true;
@ -15,8 +14,8 @@
description = "Use default packages (will use additional_packages only if disabled)"; description = "Use default packages (will use additional_packages only if disabled)";
}; };
additionalPackages = lib.mkOption { additionalPackages = lib.mkOption {
default = [ ]; default = [];
example = [ pkgs.flatpak ]; example = [pkgs.flatpak];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Additional Home manager packages. Additional Home manager packages.
@ -24,16 +23,16 @@
''; '';
}; };
specialPrograms = lib.mkOption { specialPrograms = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special program configuration to be added which require programs.something notation. special program configuration to be added which require programs.something notation.
''; '';
}; };
specialServices = lib.mkOption { specialServices = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special services configuration to be added which require an services.something notation. special services configuration to be added which require an services.something notation.
@ -72,66 +71,67 @@
browser = lib.mkOption { browser = lib.mkOption {
default = inputs.zen-browser.packages.${pkgs.system}.default; default = inputs.zen-browser.packages.${pkgs.system}.default;
example = "firefox"; example = "firefox";
type = type = with lib.types;
with lib.types;
nullOr ( nullOr (
either (enum [ either (enum [
"firefox" "firefox"
]) package ])
package
); );
description = "The browser (the enum variants have preconfigured modules)"; description = "The browser (the enum variants have preconfigured modules)";
}; };
}; };
config = lib.optionalAttrs (options ? home.packages) { config = lib.optionalAttrs (options ? home.packages) {
home.packages = home.packages =
if config.mods.homePackages.useDefaultPackages then if config.mods.homePackages.useDefaultPackages
then
with pkgs; with pkgs;
[ [
(lib.mkIf config.mods.homePackages.ncspot ncspot) (lib.mkIf config.mods.homePackages.ncspot ncspot)
(lib.mkIf config.mods.homePackages.vesktop vesktop) (lib.mkIf config.mods.homePackages.vesktop vesktop)
(lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client)
(lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient)
(lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient)
(lib.mkIf ( (lib.mkIf (
# NOTE: This should be package, but nix doesn't have that.... # NOTE: This should be package, but nix doesn't have that....
builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser
) config.mods.homePackages.browser) )
adw-gtk3 config.mods.homePackages.browser)
bat adw-gtk3
brightnessctl bat
dbus brightnessctl
fastfetch dbus
fd fastfetch
ffmpeg fd
flake-checker ffmpeg
gnome-keyring flake-checker
gnutar gnome-keyring
greetd.regreet gnutar
killall greetd.regreet
kitty killall
libnotify kitty
lsd libnotify
networkmanager lsd
nh networkmanager
nix-index nh
playerctl nix-index
poppler_utils playerctl
pulseaudio poppler_utils
libsForQt5.qt5ct pulseaudio
qt6ct libsForQt5.qt5ct
fcp qt6ct
ripgrep fcp
rm-improved ripgrep
system-config-printer rm-improved
xournalpp system-config-printer
zenith xournalpp
zoxide zenith
] zoxide
++ config.mods.homePackages.additionalPackages ]
else ++ config.mods.homePackages.additionalPackages
config.mods.homePackages.additionalPackages; else config.mods.homePackages.additionalPackages;
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml {}).generate "direnv" {
global = { global = {
warn_timeout = "-1s"; warn_timeout = "-1s";
}; };
@ -139,21 +139,19 @@
programs = programs =
config.mods.homePackages.specialPrograms config.mods.homePackages.specialPrograms
// ( // (
if config.mods.homePackages.browser == "firefox" then if config.mods.homePackages.browser == "firefox"
{ then {
firefox = { firefox = {
enable = true; enable = true;
policies = config.mods.browser.firefox.configuration; policies = config.mods.browser.firefox.configuration;
profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; profiles = builtins.listToAttrs config.mods.browser.firefox.profiles;
}; };
} }
else else {}
{ }
); );
services = services =
if config.mods.homePackages.useDefaultPackages then if config.mods.homePackages.useDefaultPackages
config.mods.homePackages.specialServices then config.mods.homePackages.specialServices
else else config.mods.homePackages.specialServices;
config.mods.homePackages.specialServices;
}; };
} }

View file

@ -5,8 +5,7 @@
options, options,
inputs, inputs,
... ...
}: }: {
{
options.mods = { options.mods = {
hyprland = { hyprland = {
anyrun = { anyrun = {
@ -25,8 +24,8 @@
''; '';
}; };
customConfig = lib.mkOption { customConfig = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Custom anyrun configuration. Custom anyrun configuration.
@ -63,7 +62,8 @@
programs.anyrun = { programs.anyrun = {
enable = true; enable = true;
config = config =
if config.mods.hyprland.anyrun.useDefaultConfig then if config.mods.hyprland.anyrun.useDefaultConfig
then
{ {
plugins = [ plugins = [
inputs.anyrun.packages.${pkgs.system}.applications inputs.anyrun.packages.${pkgs.system}.applications
@ -84,11 +84,11 @@
closeOnClick = true; closeOnClick = true;
} }
// config.mods.hyprland.anyrun.customConfig // config.mods.hyprland.anyrun.customConfig
else else config.mods.hyprland.anyrun.customConfig;
config.mods.hyprland.anyrun.customConfig;
extraCss = extraCss =
if config.mods.hyprland.anyrun.useDefaultCss then if config.mods.hyprland.anyrun.useDefaultCss
then
'' ''
#window { #window {
border-radius: 10px; border-radius: 10px;
@ -138,8 +138,7 @@
} }
'' ''
+ config.mods.hyprland.anyrun.customCss + config.mods.hyprland.anyrun.customCss
else else config.mods.hyprland.anyrun.customCss;
config.mods.hyprland.anyrun.customCss;
}; };
} }
); );

View file

@ -5,19 +5,14 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let
browserName = browserName =
if (builtins.isString config.mods.homePackages.browser) then if (builtins.isString config.mods.homePackages.browser)
config.mods.homePackages.browser then config.mods.homePackages.browser
else if else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram
config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram then config.mods.homePackages.browser.meta.mainProgram
then else config.mods.homePackages.browser.pname;
config.mods.homePackages.browser.meta.mainProgram in {
else
config.mods.homePackages.browser.pname;
in
{
options.mods = { options.mods = {
hyprland = { hyprland = {
enable = lib.mkOption { enable = lib.mkOption {
@ -35,15 +30,15 @@ in
# all others # all others
",highrr,auto,1" ",highrr,auto,1"
]; ];
example = [ "DP-1,3440x1440@180,2560x0,1,vrr,0" ]; example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
The monitor configuration for hyprland. The monitor configuration for hyprland.
''; '';
}; };
workspace = lib.mkOption { workspace = lib.mkOption {
default = [ ]; default = [];
example = [ "2,monitor:DP-1, default:true" ]; example = ["2,monitor:DP-1, default:true"];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = '' description = ''
The workspace configuration for hyprland. The workspace configuration for hyprland.
@ -58,8 +53,8 @@ in
''; '';
}; };
extraAutostart = lib.mkOption { extraAutostart = lib.mkOption {
default = [ ]; default = [];
example = [ "your application" ]; example = ["your application"];
type = lib.types.listOf lib.types.str; type = lib.types.listOf lib.types.str;
description = '' description = ''
Extra exec_once. Extra exec_once.
@ -74,8 +69,8 @@ in
''; '';
}; };
customConfig = lib.mkOption { customConfig = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Custom Hyprland configuration. Custom Hyprland configuration.
@ -83,16 +78,16 @@ in
''; '';
}; };
plugins = lib.mkOption { plugins = lib.mkOption {
default = [ ]; default = [];
example = [ ]; example = [];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Plugins to be added to Hyprland. Plugins to be added to Hyprland.
''; '';
}; };
pluginConfig = lib.mkOption { pluginConfig = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Plugin configuration to be added to Hyprland. Plugin configuration to be added to Hyprland.
@ -129,7 +124,8 @@ in
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
settings = settings =
if config.mods.hyprland.useDefaultConfig then if config.mods.hyprland.useDefaultConfig
then
{ {
"$mod" = "SUPER"; "$mod" = "SUPER";
@ -366,34 +362,39 @@ in
"immediate,class:^(.*)(needforspeedheat.exe)$" "immediate,class:^(.*)(needforspeedheat.exe)$"
]; ];
exec-once = [ exec-once =
# environment [
"systemctl --user import-environment" # environment
"dbus-update-activation-environment --systemd --all" "systemctl --user import-environment"
"hyprctl setcursor Bibata-Modern-Classic 24" "dbus-update-activation-environment --systemd --all"
"hyprctl setcursor Bibata-Modern-Classic 24"
# other programs # other programs
"hyprpaper" "hyprpaper"
"ironbar" "ironbar"
"${browserName}" "${browserName}"
"oxipaste_daemon" "oxipaste_daemon"
"oxinoti" "oxinoti"
] ++ config.mods.hyprland.extraAutostart; ]
++ config.mods.hyprland.extraAutostart;
plugin = { plugin =
hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { {
bind = [ hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable {
"SUPER, W, overview:toggle, toggle" bind = [
]; "SUPER, W, overview:toggle, toggle"
}; ];
} // config.mods.hyprland.pluginConfig; };
}
// config.mods.hyprland.pluginConfig;
} }
// config.mods.hyprland.customConfig // config.mods.hyprland.customConfig
else else lib.mkForce config.mods.hyprland.customConfig;
lib.mkForce config.mods.hyprland.customConfig; plugins =
plugins = [ [
(lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace)
] ++ config.mods.hyprland.plugins; ]
++ config.mods.hyprland.plugins;
}; };
} }
); );

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods = { options.mods = {
hyprland.hyprlock = { hyprland.hyprlock = {
enable = lib.mkOption { enable = lib.mkOption {
@ -22,7 +21,7 @@
stylix.targets.hyprlock = { stylix.targets.hyprlock = {
enable = false; enable = false;
}; };
home.packages = with pkgs; [ hyprlock ]; home.packages = with pkgs; [hyprlock];
programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable { programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable {
enable = true; enable = true;
settings = { settings = {

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods = { options.mods = {
hyprland.hyprpaper = { hyprland.hyprpaper = {
enable = lib.mkOption { enable = lib.mkOption {
@ -30,7 +29,7 @@
config = lib.mkIf config.mods.hyprland.hyprpaper.enable ( config = lib.mkIf config.mods.hyprland.hyprpaper.enable (
lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
home.packages = with pkgs; [ hyprpaper ]; home.packages = with pkgs; [hyprpaper];
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable { xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable {
text = config.mods.hyprland.hyprpaper.config; text = config.mods.hyprland.hyprpaper.config;
}; };

View file

@ -3,11 +3,9 @@
config, config,
options, options,
... ...
}: }: let
let
username = config.conf.username; username = config.conf.username;
in in {
{
options.mods = { options.mods = {
hyprland.ironbar = { hyprland.ironbar = {
enable = lib.mkOption { enable = lib.mkOption {
@ -25,8 +23,8 @@ in
''; '';
}; };
customConfig = lib.mkOption { customConfig = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Custom ironbar configuration. Custom ironbar configuration.
@ -61,7 +59,8 @@ in
programs.ironbar = { programs.ironbar = {
enable = true; enable = true;
style = style =
if config.mods.hyprland.ironbar.useDefaultCss then if config.mods.hyprland.ironbar.useDefaultCss
then
'' ''
@import url("/home/${username}/.config/gtk-3.0/gtk.css"); @import url("/home/${username}/.config/gtk-3.0/gtk.css");
@ -197,106 +196,108 @@ in
} }
'' ''
+ config.mods.hyprland.ironbar.customCss + config.mods.hyprland.ironbar.customCss
else else config.mods.hyprland.ironbar.customCss;
config.mods.hyprland.ironbar.customCss;
features = [ features = [
#"another_feature" #"another_feature"
]; ];
config = { config = {
monitors."${config.conf.defaultMonitor}" = monitors."${config.conf.defaultMonitor}" =
if config.mods.hyprland.ironbar.useDefaultConfig then if config.mods.hyprland.ironbar.useDefaultConfig
then
{ {
end = config.conf.ironbar.modules ++ [ end =
{ config.conf.ironbar.modules
type = "sys_info"; ++ [
format = [ " {memory_percent}" ]; {
interval.memory = 30; type = "sys_info";
class = "memory-usage"; format = [" {memory_percent}"];
} interval.memory = 30;
{ class = "memory-usage";
type = "custom"; }
bar = [ {
{ type = "custom";
type = "button"; bar = [
class = "popup-button"; {
label = ""; type = "button";
on_click = "popup:toggle"; class = "popup-button";
} label = "";
]; on_click = "popup:toggle";
class = "popup-button-box"; }
popup = [ ];
{ class = "popup-button-box";
type = "box"; popup = [
orientation = "vertical"; {
class = "audio-box"; type = "box";
widgets = [ orientation = "vertical";
{ class = "audio-box";
type = "box"; widgets = [
orientation = "horizontal"; {
widgets = [ type = "box";
{ orientation = "horizontal";
type = "button"; widgets = [
class = "audio-button"; {
label = ""; type = "button";
on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"); class = "audio-button";
} label = "";
{ on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth";
type = "button"; }
class = "audio-button"; {
label = "󰋋"; type = "button";
on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl internal"); class = "audio-button";
} label = "󰋋";
]; on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl internal";
class = "audio-button-box"; }
} ];
{ class = "audio-button-box";
type = "label"; }
label = "Output"; {
} type = "label";
{ label = "Output";
type = "slider"; }
class = "audio-slider"; {
step = 1.0; type = "slider";
length = 200; class = "audio-slider";
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; step = 1.0;
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; length = 200;
} value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
{ on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
type = "label"; }
label = "Input"; {
} type = "label";
{ label = "Input";
type = "slider"; }
class = "audio-slider"; {
step = 1.0; type = "slider";
length = 200; class = "audio-slider";
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; step = 1.0;
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; length = 200;
} value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
]; on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
} }
]; ];
} }
{ ];
type = "custom"; }
bar = [ {
{ type = "custom";
type = "button"; bar = [
class = "popup-button"; {
label = ""; type = "button";
on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; class = "popup-button";
} label = "";
]; on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css";
class = "popup-button-box"; }
} ];
{ class = "popup-button-box";
type = "clock"; }
format = "%I:%M"; {
format_popup = "%I:%M:%S"; type = "clock";
locale = "en_US"; format = "%I:%M";
} format_popup = "%I:%M:%S";
{ type = "tray"; } locale = "en_US";
]; }
{type = "tray";}
];
position = "top"; position = "top";
height = 10; height = 10;
anchor_to_edges = true; anchor_to_edges = true;
@ -317,8 +318,7 @@ in
]; ];
} }
// config.mods.hyprland.ironbar.customConfig // config.mods.hyprland.ironbar.customConfig
else else config.mods.hyprland.ironbar.customConfig;
config.mods.hyprland.ironbar.customConfig;
}; };
}; };
} }

View file

@ -3,8 +3,7 @@
options, options,
config, config,
... ...
}: }: {
{
options.mods.kde = { options.mods.kde = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -20,5 +19,4 @@
services.desktopManager.plasma6.enable = true; services.desktopManager.plasma6.enable = true;
} }
); );
} }

View file

@ -4,9 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods = { options.mods = {
kdeConnect.enable = lib.mkOption { kdeConnect.enable = lib.mkOption {
default = false; default = false;
@ -38,7 +36,7 @@
}; };
} }
// lib.optionalAttrs (options ? home.packages) { // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ kdePackages.kdeconnect-kde ]; home.packages = with pkgs; [kdePackages.kdeconnect-kde];
} }
); );
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.keepassxc = { options.mods.keepassxc = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -34,7 +33,7 @@
}; };
config = lib.mkIf config.mods.keepassxc.enable ( config = lib.mkIf config.mods.keepassxc.enable (
lib.optionalAttrs (options ? home.file) { lib.optionalAttrs (options ? home.file) {
home.packages = [ pkgs.keepassxc ]; home.packages = [pkgs.keepassxc];
xdg.configFile."keepassxc/keepassxc.ini" = { xdg.configFile."keepassxc/keepassxc.ini" = {
text = '' text = ''
[General] [General]

View file

@ -5,10 +5,9 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let base16 = pkgs.callPackage inputs.base16.lib {};
base16 = pkgs.callPackage inputs.base16.lib { }; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
hexTable = { hexTable = {
"0" = "1"; "0" = "1";
"1" = "0"; "1" = "0";
@ -32,10 +31,9 @@ let
"#" "#"
+ lib.strings.concatStrings ( + lib.strings.concatStrings (
(lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) (lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00))
++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ] ++ [hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}"]
); );
in in {
{
options.mods.kitty = { options.mods.kitty = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -44,7 +42,7 @@ in
description = "Enables kitty"; description = "Enables kitty";
}; };
additionalConfig = lib.mkOption { additionalConfig = lib.mkOption {
default = { }; default = {};
example = { example = {
# for the insane people out there :P # for the insane people out there :P
enable_audio_bell = "yes"; enable_audio_bell = "yes";
@ -60,79 +58,81 @@ in
}; };
programs.kitty = { programs.kitty = {
enable = true; enable = true;
settings = { settings =
enable_audio_bell = "no"; {
window_alert_on_bell = "no"; enable_audio_bell = "no";
cursor_blink_interval = "0"; window_alert_on_bell = "no";
window_padding_width = "1"; cursor_blink_interval = "0";
shell_integration = "yes"; window_padding_width = "1";
sync_with_monitor = "no"; shell_integration = "yes";
background_opacity = "0.8"; sync_with_monitor = "no";
background_opacity = "0.8";
font_family = "${config.mods.stylix.fonts.monospace.name}"; font_family = "${config.mods.stylix.fonts.monospace.name}";
bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold";
italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic";
bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic";
background = base; background = base;
foreground = "#" + scheme.base05; foreground = "#" + scheme.base05;
selection_foreground = "#" + scheme.base05; selection_foreground = "#" + scheme.base05;
selection_background = base; selection_background = base;
url_color = "#" + scheme.base04; url_color = "#" + scheme.base04;
cursor = "#" + scheme.base05; cursor = "#" + scheme.base05;
active_border_color = "#" + scheme.base03; active_border_color = "#" + scheme.base03;
inactive_border_color = "#" + scheme.base01; inactive_border_color = "#" + scheme.base01;
active_tab_background = base; active_tab_background = base;
active_tab_foreground = "#" + scheme.base05; active_tab_foreground = "#" + scheme.base05;
inactive_tab_background = "#" + scheme.base01; inactive_tab_background = "#" + scheme.base01;
inactive_tab_foreground = "#" + scheme.base04; inactive_tab_foreground = "#" + scheme.base04;
tab_bar_background = "#" + scheme.base01; tab_bar_background = "#" + scheme.base01;
mark1_foreground = "#" + scheme.base00; mark1_foreground = "#" + scheme.base00;
mark1_background = "#" + scheme.base07; mark1_background = "#" + scheme.base07;
mark2_foreground = "#" + scheme.base00; mark2_foreground = "#" + scheme.base00;
mark2_background = "#" + scheme.base0E; mark2_background = "#" + scheme.base0E;
mark3_foreground = "#" + scheme.base00; mark3_foreground = "#" + scheme.base00;
mark3_background = "#" + scheme.base08; mark3_background = "#" + scheme.base08;
color0 = "#" + scheme.base03; color0 = "#" + scheme.base03;
color1 = "#" + scheme.base08; color1 = "#" + scheme.base08;
color2 = "#" + scheme.base0B; color2 = "#" + scheme.base0B;
color3 = "#" + scheme.base0A; color3 = "#" + scheme.base0A;
color4 = "#" + scheme.base0D; color4 = "#" + scheme.base0D;
color5 = "#" + scheme.base06; color5 = "#" + scheme.base06;
color6 = "#" + scheme.base0C; color6 = "#" + scheme.base0C;
color7 = "#" + scheme.base07; color7 = "#" + scheme.base07;
color8 = "#" + scheme.base04; color8 = "#" + scheme.base04;
color9 = "#" + scheme.base08; color9 = "#" + scheme.base08;
color10 = "#" + scheme.base0B; color10 = "#" + scheme.base0B;
color11 = "#" + scheme.base0A; color11 = "#" + scheme.base0A;
color12 = "#" + scheme.base0D; color12 = "#" + scheme.base0D;
color13 = "#" + scheme.base06; color13 = "#" + scheme.base06;
color14 = "#" + scheme.base0C; color14 = "#" + scheme.base0C;
color15 = "#" + scheme.base0B; color15 = "#" + scheme.base0B;
# color0 = base; # color0 = base;
# color1 = "#" + scheme.base08; # color1 = "#" + scheme.base08;
# color2 = "#" + scheme.base0B; # color2 = "#" + scheme.base0B;
# color3 = "#" + scheme.base0A; # color3 = "#" + scheme.base0A;
# color4 = "#" + scheme.base0D; # color4 = "#" + scheme.base0D;
# color5 = "#" + scheme.base0E; # color5 = "#" + scheme.base0E;
# color6 = "#" + scheme.base0C; # color6 = "#" + scheme.base0C;
# color7 = "#" + scheme.base05; # color7 = "#" + scheme.base05;
# #
# color8 = "#" + scheme.base03; # color8 = "#" + scheme.base03;
# color9 = "#" + scheme.base08; # color9 = "#" + scheme.base08;
# color10 = "#" + scheme.base0B; # color10 = "#" + scheme.base0B;
# color11 = "#" + scheme.base0A; # color11 = "#" + scheme.base0A;
# color12 = "#" + scheme.base0D; # color12 = "#" + scheme.base0D;
# color13 = "#" + scheme.base0E; # color13 = "#" + scheme.base0E;
# color14 = "#" + scheme.base0C; # color14 = "#" + scheme.base0C;
# color15 = "#" + scheme.base07; # color15 = "#" + scheme.base07;
shell = lib.mkIf config.mods.fish.enable "fish"; shell = lib.mkIf config.mods.fish.enable "fish";
} // config.mods.kitty.additionalConfig; }
// config.mods.kitty.additionalConfig;
}; };
} }
); );

View file

@ -4,8 +4,7 @@
config, config,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.media = { options.mods.media = {
useBasePackages = lib.mkOption { useBasePackages = lib.mkOption {
default = true; default = true;
@ -14,24 +13,24 @@
description = "Default media packages (If disabled, only the additional packages will be installed)"; description = "Default media packages (If disabled, only the additional packages will be installed)";
}; };
additionalPackages = lib.mkOption { additionalPackages = lib.mkOption {
default = [ ]; default = [];
example = [ pkgs.flatpak ]; example = [pkgs.flatpak];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = '' description = ''
Additional media packages. Additional media packages.
''; '';
}; };
specialPrograms = lib.mkOption { specialPrograms = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special program configuration to be added which require programs.something notation. special program configuration to be added which require programs.something notation.
''; '';
}; };
specialServices = lib.mkOption { specialServices = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
special services configuration to be added which require an services.something notation. special services configuration to be added which require an services.something notation.
@ -40,51 +39,50 @@
}; };
config = lib.optionalAttrs (options ? home.packages) { config = lib.optionalAttrs (options ? home.packages) {
home.packages = home.packages =
if config.mods.media.useBasePackages then if config.mods.media.useBasePackages
then
with pkgs; with pkgs;
[ [
# base audio # base audio
pipewire pipewire
wireplumber wireplumber
# audio control # audio control
playerctl playerctl
# images # images
imv imv
# videos # videos
mpv mpv
# pdf # pdf
zathura zathura
evince evince
libreoffice-fresh libreoffice-fresh
onlyoffice-bin onlyoffice-bin
pdftk pdftk
pdfpc pdfpc
polylux2pdfpc polylux2pdfpc
# spotify # spotify
# video editing # video editing
kdenlive kdenlive
# image creation # image creation
inkscape inkscape
gimp gimp
krita krita
yt-dlp yt-dlp
] ]
++ config.mods.media.additionalPackages ++ config.mods.media.additionalPackages
else else config.mods.media.additionalPackages;
config.mods.media.additionalPackages;
programs = programs =
if config.mods.media.useBasePackages then if config.mods.media.useBasePackages
then
{ {
obs-studio.enable = true; obs-studio.enable = true;
obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; obs-studio.plugins = with pkgs; [obs-studio-plugins.obs-vaapi];
} }
// config.mods.media.specialPrograms // config.mods.media.specialPrograms
else else config.mods.media.specialPrograms;
config.mods.media.specialPrograms;
services = services =
if config.mods.media.useBasePackages then if config.mods.media.useBasePackages
config.mods.media.specialServices then config.mods.media.specialServices
else else config.mods.media.specialServices;
config.mods.media.specialServices;
}; };
} }

View file

@ -5,19 +5,14 @@
lib, lib,
options, options,
... ...
}: }: let
let
browserName = browserName =
if (builtins.isString config.mods.homePackages.browser) then if (builtins.isString config.mods.homePackages.browser)
config.mods.homePackages.browser then config.mods.homePackages.browser
else if else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram
config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram then config.mods.homePackages.browser.meta.mainProgram
then else config.mods.homePackages.browser.pname;
config.mods.homePackages.browser.meta.mainProgram in {
else
config.mods.homePackages.browser.pname;
in
{
options.mods.mime = { options.mods.mime = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -32,7 +27,7 @@ in
"jpeg" "jpeg"
"gif" "gif"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Image mime handlers"; description = "Image mime handlers";
}; };
@ -42,7 +37,7 @@ in
"avi" "avi"
"mkv" "mkv"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Video mime handlers"; description = "Video mime handlers";
}; };
@ -53,7 +48,7 @@ in
"wav" "wav"
"aac" "aac"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Audio mime handlers"; description = "Audio mime handlers";
}; };
@ -66,7 +61,7 @@ in
"x-extension-xht" "x-extension-xht"
"x-extension-xhtml" "x-extension-xhtml"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Browser mime handlers"; description = "Browser mime handlers";
}; };
@ -78,71 +73,71 @@ in
"https" "https"
"unknown" "unknown"
]; ];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Browser X mime handlers"; description = "Browser X mime handlers";
}; };
browserApplications = lib.mkOption { browserApplications = lib.mkOption {
default = [ "${browserName}" ]; default = ["${browserName}"];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Applications used for handling browser mime types"; description = "Applications used for handling browser mime types";
}; };
imageApplications = lib.mkOption { imageApplications = lib.mkOption {
default = [ "imv" ]; default = ["imv"];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Applications used for handling image mime types"; description = "Applications used for handling image mime types";
}; };
videoApplications = lib.mkOption { videoApplications = lib.mkOption {
default = [ "mpv" ]; default = ["mpv"];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Applications used for handling video mime types"; description = "Applications used for handling video mime types";
}; };
audioApplications = lib.mkOption { audioApplications = lib.mkOption {
default = [ "io.bassi.Amberol" ]; default = ["io.bassi.Amberol"];
example = [ ]; example = [];
type = with lib.types; listOf str; type = with lib.types; listOf str;
description = "Applications used for handling audio mime types"; description = "Applications used for handling audio mime types";
}; };
# TODO additional config # TODO additional config
}; };
config = lib.optionalAttrs (options ? home) { config = lib.optionalAttrs (options ? home) {
xdg = xdg = let
let xdgAssociations = type: program: list:
xdgAssociations = builtins.listToAttrs (
type: program: list: map (e: {
builtins.listToAttrs ( name = "${type}/${e}";
map (e: { value = program;
name = "${type}/${e}"; })
value = program; list
}) list
);
imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes;
videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes;
audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes;
browserAc =
(xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes)
// (xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications
config.mods.mime.browserXTypes
);
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) (
# TODO make configurable
{
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ];
"text/html" = config.mods.mime.browserApplications;
"text/plain" = [ "neovide" ];
"x-scheme-handler/chrome" = [ "com.brave.browser" ];
"inode/directory" = [ "yazi" ];
}
// imageAc
// audioAc
// videoAc
// browserAc
); );
in
imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes;
videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes;
audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes;
browserAc =
(xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes)
// (
xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications
config.mods.mime.browserXTypes
);
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) (
# TODO make configurable
{
"application/pdf" = ["org.pwmt.zathura-pdf-mupdf"];
"text/html" = config.mods.mime.browserApplications;
"text/plain" = ["neovide"];
"x-scheme-handler/chrome" = ["com.brave.browser"];
"inode/directory" = ["yazi"];
}
// imageAc
// audioAc
// videoAc
// browserAc
);
in
lib.mkIf config.mods.mime.enable { lib.mkIf config.mods.mime.enable {
enable = true; enable = true;
cacheHome = config.home.homeDirectory + "/.local/cache"; cacheHome = config.home.homeDirectory + "/.local/cache";

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.ncspot = { options.mods.ncspot = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -16,13 +15,13 @@
}; };
config = lib.mkIf config.mods.ncspot.enable ( config = lib.mkIf config.mods.ncspot.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ ncspot ]; home.packages = with pkgs; [ncspot];
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" { xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml {}).generate "ncspot" {
notify = true; notify = true;
shuffle = true; shuffle = true;
cover_max_scale = 2; cover_max_scale = 2;
initial_screen = "library"; initial_screen = "library";
library_tabs = [ "playlists" ]; library_tabs = ["playlists"];
theme = { theme = {
background = "#1a1b26"; background = "#1a1b26";
primary = "#9aa5ce"; primary = "#9aa5ce";

View file

@ -1,5 +1,4 @@
{ lib, ... }: {lib, ...}: {
{
options.mods = { options.mods = {
nextcloud = { nextcloud = {
enable = lib.mkOption { enable = lib.mkOption {
@ -21,7 +20,7 @@
description = "Your url"; description = "Your url";
}; };
synclist = lib.mkOption { synclist = lib.mkOption {
default = [ ]; default = [];
example = [ example = [
{ {
name = "sync globi folder"; name = "sync globi folder";
@ -36,5 +35,4 @@
}; };
}; };
}; };
} }

View file

@ -4,8 +4,7 @@
options, options,
inputs, inputs,
... ...
}: }: {
{
imports = [ imports = [
./oxidash.nix ./oxidash.nix
./oxinoti.nix ./oxinoti.nix

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.oxi.oxidash = { options.mods.oxi.oxidash = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.oxi.oxinoti = { options.mods.oxi.oxinoti = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -17,7 +16,8 @@
lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
programs.oxinoti.enable = true; programs.oxinoti.enable = true;
xdg.configFile."oxinoti/style.css" = { xdg.configFile."oxinoti/style.css" = {
text = # css text =
# css
'' ''
@import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css");

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.oxi.oxipaste = { options.mods.oxi.oxipaste = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.oxi.oxishut = { options.mods.oxi.oxishut = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.piper = { options.mods.piper = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -15,7 +14,7 @@
}; };
}; };
config = lib.mkIf config.mods.piper.enable ( config = lib.mkIf config.mods.piper.enable (
lib.optionalAttrs (options ? services.ratbagd) { services.ratbagd.enable = true; } lib.optionalAttrs (options ? services.ratbagd) {services.ratbagd.enable = true;}
// lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ piper ]; } // lib.optionalAttrs (options ? home.packages) {home.packages = with pkgs; [piper];}
); );
} }

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.plymouth = { options.mods.plymouth = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -14,6 +13,6 @@
}; };
}; };
config = lib.mkIf config.mods.plymouth.enable ( config = lib.mkIf config.mods.plymouth.enable (
lib.optionalAttrs (options ? boot.plymouth) { boot.plymouth.enable = true; } lib.optionalAttrs (options ? boot.plymouth) {boot.plymouth.enable = true;}
); );
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.printing = { options.mods.printing = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -21,7 +20,7 @@
printing = { printing = {
enable = true; enable = true;
browsing = true; browsing = true;
drivers = [ pkgs.hplip ]; drivers = [pkgs.hplip];
startWhenNeeded = true; # optional startWhenNeeded = true; # optional
}; };
avahi = { avahi = {

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.scripts = { options.mods.scripts = {
changeBrightness = lib.mkOption { changeBrightness = lib.mkOption {
default = true; default = true;
@ -20,111 +19,113 @@
description = "Enables the audioControl script"; description = "Enables the audioControl script";
}; };
scripts = lib.mkOption { scripts = lib.mkOption {
default = [ ]; default = [];
example = [ ]; example = [];
description = "More scripts to be passed. (check existing ones for types and examples)"; description = "More scripts to be passed. (check existing ones for types and examples)";
}; };
}; };
config = ( config = (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = [ home.packages =
(lib.mkIf config.mods.scripts.changeBrightness ( [
pkgs.writeShellScriptBin "changeBrightness" '' (lib.mkIf config.mods.scripts.changeBrightness (
set_brightness() { pkgs.writeShellScriptBin "changeBrightness" ''
brightnessctl set "$1" set_brightness() {
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') brightnessctl set "$1"
dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
} dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%"
}
if [ "$1" == "brightness" ]; then if [ "$1" == "brightness" ]; then
set_brightness "$2" set_brightness "$2"
fi fi
'' ''
)) ))
(lib.mkIf config.mods.scripts.audioControl ( (lib.mkIf config.mods.scripts.audioControl (
pkgs.writeShellScriptBin "audioControl" '' pkgs.writeShellScriptBin "audioControl" ''
ncspot() { ncspot() {
NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1" pactl set-sink-input-volume "$CHANGE" "$1"
VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%"
} }
firefox() { firefox() {
STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n')
# NUMS=',' read -r -a array <<< "$STRING" # NUMS=',' read -r -a array <<< "$STRING"
readarray -td, NUMS <<<"$STRING" readarray -td, NUMS <<<"$STRING"
declare -p NUMS declare -p NUMS
for index in "''${!NUMS[@]}"; do #"''${!array[@]}" for index in "''${!NUMS[@]}"; do #"''${!array[@]}"
NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1" pactl set-sink-input-volume "$CHANGE" "$1"
done done
VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%"
} }
internal() { internal() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER" pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" " notify-send "changed audio to "$DEVICE" "
else else
notify-send "failed, not available!" notify-send "failed, not available!"
fi fi
} }
set_volume_sink() { set_volume_sink() {
pactl set-sink-volume @DEFAULT_SINK@ "$1" pactl set-sink-volume @DEFAULT_SINK@ "$1"
CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%"
} }
set_volume_source() { set_volume_source() {
pactl set-source-volume @DEFAULT_SOURCE@ "$1" pactl set-source-volume @DEFAULT_SOURCE@ "$1"
CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%"
} }
bluetooth() { bluetooth() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER" pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" " notify-send "changed audio to "$DEVICE" "
else else
notify-send "failed, not available!" notify-send "failed, not available!"
fi fi
} }
mute() { mute() {
pactl set-sink-mute @DEFAULT_SINK@ toggle pactl set-sink-mute @DEFAULT_SINK@ toggle
MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) MUTE=$(pactl get-sink-mute @DEFAULT_SINK@)
notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE"
} }
if [ "$1" == "internal" ]; then if [ "$1" == "internal" ]; then
internal internal
elif [ "$1" == "bluetooth" ]; then elif [ "$1" == "bluetooth" ]; then
bluetooth bluetooth
elif [ "$1" == "firefox" ]; then elif [ "$1" == "firefox" ]; then
firefox "$2" firefox "$2"
elif [ "$1" == "ncspot" ]; then elif [ "$1" == "ncspot" ]; then
ncspot "$2" ncspot "$2"
elif [ "$1" == "mute" ]; then elif [ "$1" == "mute" ]; then
mute mute
elif [ "$1" == "sink" ]; then elif [ "$1" == "sink" ]; then
set_volume_sink "$2" set_volume_sink "$2"
elif [ "$1" == "source" ]; then elif [ "$1" == "source" ]; then
set_volume_source "$2" set_volume_source "$2"
fi fi
'' ''
)) ))
] ++ config.mods.scripts.scripts; ]
++ config.mods.scripts.scripts;
} }
); );
} }

View file

@ -3,8 +3,7 @@
options, options,
config, config,
... ...
}: }: {
{
options.mods.sddm = { options.mods.sddm = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -19,7 +18,7 @@
description = "Use default options provided by module. If disabled, will only apply extraOptions."; description = "Use default options provided by module. If disabled, will only apply extraOptions.";
}; };
extraOptions = lib.mkOption { extraOptions = lib.mkOption {
default = { }; default = {};
example = { example = {
wayland.enable = false; wayland.enable = false;
}; };

View file

@ -5,8 +5,7 @@
options, options,
root, root,
... ...
}: }: {
{
options.mods.sops = { options.mods.sops = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -15,13 +14,13 @@
description = "Enable sops secrets"; description = "Enable sops secrets";
}; };
secrets = lib.mkOption { secrets = lib.mkOption {
default = { }; default = {};
example = { example = {
hub = { }; hub = {};
lab = { }; lab = {};
${config.conf.username} = { }; ${config.conf.username} = {};
nextcloud = { }; nextcloud = {};
access = { }; access = {};
}; };
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "secrets for sops"; description = "secrets for sops";
@ -29,8 +28,7 @@
sopsPath = lib.mkOption { sopsPath = lib.mkOption {
default = root + /secrets/secrets.yaml; default = root + /secrets/secrets.yaml;
example = "/your/path"; example = "/your/path";
type = type = with lib.types;
with lib.types;
oneOf [ oneOf [
str str
path path
@ -46,18 +44,18 @@
}; };
config = lib.mkIf config.mods.sops.enable ( config = lib.mkIf config.mods.sops.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ sops ]; home.packages = with pkgs; [sops];
sops = { sops = {
gnupg = { gnupg = {
home = "~/.gnupg"; home = "~/.gnupg";
sshKeyPaths = [ ]; sshKeyPaths = [];
}; };
defaultSopsFile = config.mods.sops.sopsPath; defaultSopsFile = config.mods.sops.sopsPath;
validateSopsFiles = config.mods.sops.validateSopsFile; validateSopsFiles = config.mods.sops.validateSopsFile;
secrets = config.mods.sops.secrets; secrets = config.mods.sops.secrets;
}; };
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
} }
); );
} }

View file

@ -5,8 +5,7 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
options.mods = { options.mods = {
starship = { starship = {
enable = lib.mkOption { enable = lib.mkOption {
@ -26,8 +25,8 @@
''; '';
}; };
customPrompt = lib.mkOption { customPrompt = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = '' description = ''
Custom configuration for prompt. Custom configuration for prompt.
@ -40,138 +39,136 @@
# environment.systemPackages needed in order to configure systemwide # environment.systemPackages needed in order to configure systemwide
config = lib.mkIf config.mods.starship.enable ( config = lib.mkIf config.mods.starship.enable (
lib.optionalAttrs (options ? environment.systemPackages) { lib.optionalAttrs (options ? environment.systemPackages) {
programs.starship = programs.starship = let
let base16 = pkgs.callPackage inputs.base16.lib {};
base16 = pkgs.callPackage inputs.base16.lib { }; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)";
code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; in {
in enable = true;
{ interactiveOnly = true;
enable = true; presets = lib.mkIf config.mods.starship.useDefaultPrompt ["pastel-powerline"];
interactiveOnly = true; settings =
presets = lib.mkIf config.mods.starship.useDefaultPrompt [ "pastel-powerline" ]; lib.mkIf config.mods.starship.useDefaultPrompt {
settings = # derived from https://starship.rs/presets/pastel-powerline
lib.mkIf config.mods.starship.useDefaultPrompt { format = "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)";
# derived from https://starship.rs/presets/pastel-powerline right_format = "$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os";
format = "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)"; username = {
right_format = "$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os"; show_always = false;
username = { style_user = "bg:#5277C3 fg:#${scheme.base05}";
show_always = false; style_root = "bg:#5277C3 fg:#${scheme.base05}";
style_user = "bg:#5277C3 fg:#${scheme.base05}"; format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)";
style_root = "bg:#5277C3 fg:#${scheme.base05}"; disabled = false;
format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)"; };
disabled = false; os = {
symbols = {
NixOS = " ";
}; };
os = { style = "bg:#3465A4 fg:#${scheme.base05}";
symbols = { disabled = false;
NixOS = " "; };
}; directory = {
style = "bg:#3465A4 fg:#${scheme.base05}"; style = "bg:#3465A4 fg:#${scheme.base05}";
disabled = false; format = "[ $path ]($style)";
}; truncation_length = 3;
directory = { truncation_symbol = "/";
style = "bg:#3465A4 fg:#${scheme.base05}"; };
format = "[ $path ]($style)"; git_branch = {
truncation_length = 3; always_show_remote = true;
truncation_symbol = "/"; symbol = "";
}; style = "bg:#5256c3 fg:#${scheme.base05}";
git_branch = { format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
always_show_remote = true; };
symbol = ""; git_status = {
style = "bg:#5256c3 fg:#${scheme.base05}"; staged = "+\${count} (fg:#C4A000)";
format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)"; ahead = "\${count} (fg:#C4A000)";
}; diverged = "\${count} (fg:#C4A000)";
git_status = { behind = "\${count} (fg:#C4A000)";
staged = "+\${count} (fg:#C4A000)"; stashed = " ";
ahead = "\${count} (fg:#C4A000)"; untracked = "?\${count} (fg:#C4A000)";
diverged = "\${count} (fg:#C4A000)"; modified = "!\${count} (fg:#C4A000)";
behind = "\${count} (fg:#C4A000)"; deleted = "\${count} (fg:#C4A000)";
stashed = " "; conflicted = "=\${count} (fg:#C4A000)";
untracked = "?\${count} (fg:#C4A000)"; renamed = "»\${count} (fg:#C4A000)";
modified = "!\${count} (fg:#C4A000)"; style = "bg:#5256c3 fg:fg:#C4A000";
deleted = "\${count} (fg:#C4A000)"; format = "[$all_status$ahead_behind]($style)";
conflicted = "=\${count} (fg:#C4A000)"; };
renamed = "»\${count} (fg:#C4A000)"; git_metrics = {
style = "bg:#5256c3 fg:fg:#C4A000"; disabled = false;
format = "[$all_status$ahead_behind]($style)"; format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
}; };
git_metrics = { c = {
disabled = false; format = code_format;
format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))"; };
}; elixir = {
c = { format = code_format;
format = code_format; };
}; elm = {
elixir = { format = code_format;
format = code_format; };
}; golang = {
elm = { format = code_format;
format = code_format; };
}; gradle = {
golang = { format = code_format;
format = code_format; };
}; haskell = {
gradle = { format = code_format;
format = code_format; };
}; java = {
haskell = { format = code_format;
format = code_format; };
}; julia = {
java = { format = code_format;
format = code_format; };
}; nodejs = {
julia = { format = code_format;
format = code_format; };
}; nim = {
nodejs = { format = code_format;
format = code_format; };
}; nix_shell = {
nim = { symbol = "";
format = code_format; format = code_format;
}; };
nix_shell = { rust = {
symbol = ""; format = code_format;
format = code_format; };
}; scala = {
rust = { format = code_format;
format = code_format; };
}; typst = {
scala = { format = code_format;
format = code_format; };
}; python = {
typst = { format = code_format;
format = code_format; };
}; ocaml = {
python = { format = code_format;
format = code_format; };
}; opa = {
ocaml = { format = code_format;
format = code_format; };
}; perl = {
opa = { format = code_format;
format = code_format; };
}; zig = {
perl = { format = code_format;
format = code_format; };
}; dart = {
zig = { format = code_format;
format = code_format; };
}; dotnet = {
dart = { format = code_format;
format = code_format; };
}; time = {
dotnet = { disabled = false;
format = code_format; time_format = "%R"; # Hour:Minute Format
}; style = "bg:#3465A4 fg:#${scheme.base05}";
time = { format = "[ $time ]($style)";
disabled = false; };
time_format = "%R"; # Hour:Minute Format }
style = "bg:#3465A4 fg:#${scheme.base05}"; // config.mods.starship.customPrompt;
format = "[ $time ]($style)"; };
};
}
// config.mods.starship.customPrompt;
};
} }
); );
} }

View file

@ -4,8 +4,7 @@
options, options,
pkgs, pkgs,
... ...
}: }: {
{
options.mods.stylix = { options.mods.stylix = {
colorscheme = lib.mkOption { colorscheme = lib.mkOption {
default = "catppuccin-mocha"; default = "catppuccin-mocha";
@ -34,8 +33,7 @@
base0E = "BB9AF7"; base0E = "BB9AF7";
base0F = "F7768E"; base0F = "F7768E";
}; };
type = type = with lib.types;
with lib.types;
oneOf [ oneOf [
str str
attrs attrs
@ -57,7 +55,7 @@
name = "catppuccin-mocha-lavender-cursors"; name = "catppuccin-mocha-lavender-cursors";
size = 24; size = 24;
}; };
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Xcursor config"; description = "Xcursor config";
}; };
@ -83,7 +81,7 @@
name = "Noto Color Emoji"; name = "Noto Color Emoji";
}; };
}; };
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "font config"; description = "font config";
}; };
@ -101,10 +99,9 @@
fonts = config.mods.stylix.fonts; fonts = config.mods.stylix.fonts;
cursor = config.mods.stylix.cursor; cursor = config.mods.stylix.cursor;
base16Scheme = ( base16Scheme = (
if builtins.isAttrs config.mods.stylix.colorscheme then if builtins.isAttrs config.mods.stylix.colorscheme
config.mods.stylix.colorscheme then config.mods.stylix.colorscheme
else else "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"
"${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"
); );
}; };
}) })

View file

@ -5,12 +5,10 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let base16 = pkgs.callPackage inputs.base16.lib {};
base16 = pkgs.callPackage inputs.base16.lib { };
scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
in in {
{
options.mods.supersonic = { options.mods.supersonic = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -31,42 +29,45 @@ in
config = lib.mkIf config.mods.supersonic.enable ( config = lib.mkIf config.mods.supersonic.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [
(if config.mods.supersonic.variant == "wayland" then supersonic-wayland else supersonic) (
if config.mods.supersonic.variant == "wayland"
then supersonic-wayland
else supersonic
)
]; ];
xdg.configFile."supersonic/themes/custom.toml".source = xdg.configFile."supersonic/themes/custom.toml".source =
(pkgs.formats.toml { }).generate "customTheme" (pkgs.formats.toml {}).generate "customTheme"
{ {
SupersonicTheme = { SupersonicTheme = {
Name = "Custom"; Name = "Custom";
Version = "0.2"; Version = "0.2";
SupportsDark = true; SupportsDark = true;
SupportsLight = true; SupportsLight = true;
};
DarkColors = {
PageBackground = "#${scheme.base00}";
ListHeader = "#${scheme.base02}";
PageHeader = "#${scheme.base02}";
Background = "#${scheme.base01}";
ScrollBar = "#${scheme.base02}";
Button = "#${scheme.base02}";
Foreground = "#${scheme.base04}";
InputBackground = "#${scheme.base02}";
};
# just define the same as base 16 doesn't define if it is light or not
LightColors = {
PageBackground = "#${scheme.base00}";
ListHeader = "#${scheme.base02}";
PageHeader = "#${scheme.base02}";
Background = "#${scheme.base01}";
ScrollBar = "#${scheme.base02}";
Button = "#${scheme.base02}";
Foreground = "#${scheme.base04}";
InputBackground = "#${scheme.base02}";
};
}; };
}
DarkColors = {
PageBackground = "#${scheme.base00}";
ListHeader = "#${scheme.base02}";
PageHeader = "#${scheme.base02}";
Background = "#${scheme.base01}";
ScrollBar = "#${scheme.base02}";
Button = "#${scheme.base02}";
Foreground = "#${scheme.base04}";
InputBackground = "#${scheme.base02}";
};
# just define the same as base 16 doesn't define if it is light or not
LightColors = {
PageBackground = "#${scheme.base00}";
ListHeader = "#${scheme.base02}";
PageHeader = "#${scheme.base02}";
Background = "#${scheme.base01}";
ScrollBar = "#${scheme.base02}";
Button = "#${scheme.base02}";
Foreground = "#${scheme.base04}";
InputBackground = "#${scheme.base02}";
};
};
}
); );
} }

View file

@ -3,12 +3,11 @@
config, config,
options, options,
pkgs, pkgs,
stable,
... ...
}: }: let
let
callPackage = lib.callPackageWith pkgs; callPackage = lib.callPackageWith pkgs;
in in {
{
options.mods.teams = { options.mods.teams = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -25,12 +24,12 @@ in
}; };
config = lib.mkIf config.mods.teams.enable ( config = lib.mkIf config.mods.teams.enable (
lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
home.packages = [ (callPackage ../../override/teams.nix { }) ]; home.packages = [(callPackage ../../override/teams.nix {pkgs = stable;})];
} }
// (lib.optionalAttrs (options ? boot.kernelModules) { // (lib.optionalAttrs (options ? boot.kernelModules) {
boot = { boot = {
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; extraModulePackages = with config.boot.kernelPackages; [v4l2loopback];
kernelModules = [ "v4l2loopback" ]; kernelModules = ["v4l2loopback"];
extraModprobeConfig = '' extraModprobeConfig = ''
options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
''; '';

View file

@ -4,18 +4,14 @@
options, options,
pkgs, pkgs,
... ...
}: }: let
let
module = module =
if config.conf.cpu == "intel" then if config.conf.cpu == "intel"
"kvm-intel" then "kvm-intel"
else if config.conf.cpu == "amd" then else if config.conf.cpu == "amd"
"kvm-amd" then "kvm-amd"
else else "";
""; in {
in
{
options.mods = { options.mods = {
virtmanager.enable = lib.mkOption { virtmanager.enable = lib.mkOption {
default = false; default = false;
@ -24,7 +20,7 @@ in
description = '' description = ''
Enables virt-manager kvm. Enables virt-manager kvm.
''; '';
}; };
}; };
@ -48,7 +44,7 @@ in
package = pkgs.qemu_kvm; package = pkgs.qemu_kvm;
swtpm.enable = true; swtpm.enable = true;
ovmf.enable = true; ovmf.enable = true;
ovmf.packages = [ pkgs.OVMFFull.fd ]; ovmf.packages = [pkgs.OVMFFull.fd];
}; };
}; };
spiceUSBRedirection.enable = true; spiceUSBRedirection.enable = true;
@ -60,13 +56,12 @@ in
"kvm" "kvm"
"qemu-libvirtd" "qemu-libvirtd"
]; ];
} }
// lib.optionalAttrs (options ? dconf.settings) { // lib.optionalAttrs (options ? dconf.settings) {
dconf.settings = { dconf.settings = {
"org/virt-manager/virt-manager/connections" = { "org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu:///system" ]; autoconnect = ["qemu:///system"];
uris = [ "qemu:///system" ]; uris = ["qemu:///system"];
}; };
}; };
}; };

View file

@ -3,8 +3,7 @@
options, options,
config, config,
... ...
}: }: {
{
options.mods.xkb = { options.mods.xkb = {
layout = lib.mkOption { layout = lib.mkOption {
default = "dashie"; default = "dashie";

View file

@ -3,9 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods = { options.mods = {
xone.enable = lib.mkOption { xone.enable = lib.mkOption {
default = false; default = false;
@ -17,5 +15,5 @@
}; };
}; };
config = lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; }; config = lib.optionalAttrs (options ? hardware) {hardware.xone.enable = true;};
} }

View file

@ -3,8 +3,7 @@
config, config,
options, options,
... ...
}: }: {
{
options.mods.yazi = { options.mods.yazi = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -19,8 +18,8 @@
description = "Use default yazi config (if disabled only additionalConfig is used)"; description = "Use default yazi config (if disabled only additionalConfig is used)";
}; };
additionalConfig = lib.mkOption { additionalConfig = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Additional config for yazi"; description = "Additional config for yazi";
}; };
@ -31,16 +30,15 @@
description = "Use default yazi keymap (if disabled only additionalKeymap is used)"; description = "Use default yazi keymap (if disabled only additionalKeymap is used)";
}; };
additionalKeymap = lib.mkOption { additionalKeymap = lib.mkOption {
default = { }; default = {};
example = { }; example = {};
type = with lib.types; attrsOf anything; type = with lib.types; attrsOf anything;
description = "Additional keymap for yazi"; description = "Additional keymap for yazi";
}; };
}; };
config = config = let
let conf = import ./yazi.nix;
conf = import ./yazi.nix; in
in
lib.optionalAttrs (options ? home.packages) ( lib.optionalAttrs (options ? home.packages) (
lib.mkIf config.mods.yazi.enable { lib.mkIf config.mods.yazi.enable {
programs.yazi = { programs.yazi = {

View file

@ -99,125 +99,125 @@
keymap = { keymap = {
manager.keymap = [ manager.keymap = [
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "escape"; run = "escape";
desc = "Exit visual mode clear selected or cancel search"; desc = "Exit visual mode clear selected or cancel search";
} }
{ {
on = [ "q" ]; on = ["q"];
run = "quit"; run = "quit";
desc = "Exit the process"; desc = "Exit the process";
} }
{ {
on = [ "Q" ]; on = ["Q"];
run = "quit --no-cwd-file"; run = "quit --no-cwd-file";
desc = "Exit the process without writing cwd-file"; desc = "Exit the process without writing cwd-file";
} }
{ {
on = [ "<C-q>" ]; on = ["<C-q>"];
run = "close"; run = "close";
desc = "Close the current tab or quit if it is last tab"; desc = "Close the current tab or quit if it is last tab";
} }
{ {
on = [ "<C-z>" ]; on = ["<C-z>"];
run = "suspend"; run = "suspend";
desc = "Suspend the process"; desc = "Suspend the process";
} }
# Navigation # Navigation
{ {
on = [ "l" ]; on = ["l"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "k" ]; on = ["k"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "L" ]; on = ["L"];
run = "arrow -5"; run = "arrow -5";
desc = "Move cursor up 5 lines"; desc = "Move cursor up 5 lines";
} }
{ {
on = [ "K" ]; on = ["K"];
run = "arrow 5"; run = "arrow 5";
desc = "Move cursor down 5 lines"; desc = "Move cursor down 5 lines";
} }
{ {
on = [ "<C-u>" ]; on = ["<C-u>"];
run = "arrow -50%"; run = "arrow -50%";
desc = "Move cursor up half page"; desc = "Move cursor up half page";
} }
{ {
on = [ "<C-d>" ]; on = ["<C-d>"];
run = "arrow 50%"; run = "arrow 50%";
desc = "Move cursor down half page"; desc = "Move cursor down half page";
} }
{ {
on = [ "<C-b>" ]; on = ["<C-b>"];
run = "arrow -100%"; run = "arrow -100%";
desc = "Move cursor up one page"; desc = "Move cursor up one page";
} }
{ {
on = [ "<C-f>" ]; on = ["<C-f>"];
run = "arrow 100%"; run = "arrow 100%";
desc = "Move cursor down one page"; desc = "Move cursor down one page";
} }
{ {
on = [ "j" ]; on = ["j"];
run = "leave"; run = "leave";
desc = "Go back to the parent directory"; desc = "Go back to the parent directory";
} }
{ {
on = [ ";" ]; on = [";"];
run = "enter"; run = "enter";
desc = "Enter the child directory"; desc = "Enter the child directory";
} }
{ {
on = [ "J" ]; on = ["J"];
run = "back"; run = "back";
desc = "Go back to the previous directory"; desc = "Go back to the previous directory";
} }
{ {
on = [ "P" ]; on = ["P"];
run = "forward"; run = "forward";
desc = "Go forward to the next directory"; desc = "Go forward to the next directory";
} }
{ {
on = [ "<C-k>" ]; on = ["<C-k>"];
run = "peek -5"; run = "peek -5";
desc = "Peek up 5 units in the preview"; desc = "Peek up 5 units in the preview";
} }
{ {
on = [ "<C-j>" ]; on = ["<C-j>"];
run = "peek 5"; run = "peek 5";
desc = "Peek down 5 units in the preview"; desc = "Peek down 5 units in the preview";
} }
{ {
on = [ "<Up>" ]; on = ["<Up>"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "<Down>" ]; on = ["<Down>"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "<Left>" ]; on = ["<Left>"];
run = "leave"; run = "leave";
desc = "Go back to the parent directory"; desc = "Go back to the parent directory";
} }
{ {
on = [ "<Right>" ]; on = ["<Right>"];
run = "enter"; run = "enter";
desc = "Enter the child directory"; desc = "Enter the child directory";
} }
@ -231,116 +231,116 @@
desc = "Move cursor to the top"; desc = "Move cursor to the top";
} }
{ {
on = [ "G" ]; on = ["G"];
run = "arrow 99999999"; run = "arrow 99999999";
desc = "Move cursor to the bottom"; desc = "Move cursor to the bottom";
} }
# Selection # Selection
{ {
on = [ "v" ]; on = ["v"];
run = "visual_mode"; run = "visual_mode";
desc = "Enter visual mode (selection mode)"; desc = "Enter visual mode (selection mode)";
} }
{ {
on = [ "V" ]; on = ["V"];
run = "visual_mode --unset"; run = "visual_mode --unset";
desc = "Enter visual mode (unset mode)"; desc = "Enter visual mode (unset mode)";
} }
{ {
on = [ "<C-a>" ]; on = ["<C-a>"];
run = "select_all --state=true"; run = "select_all --state=true";
desc = "Select all files"; desc = "Select all files";
} }
{ {
on = [ "<C-r>" ]; on = ["<C-r>"];
run = "select_all --state=none"; run = "select_all --state=none";
desc = "Inverse selection of all files"; desc = "Inverse selection of all files";
} }
# Operation # Operation
{ {
on = [ "o" ]; on = ["o"];
run = "open"; run = "open";
desc = "Open the selected files"; desc = "Open the selected files";
} }
{ {
on = [ "O" ]; on = ["O"];
run = "open --interactive"; run = "open --interactive";
desc = "Open the selected files interactively"; desc = "Open the selected files interactively";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "open"; run = "open";
desc = "Open the selected files"; desc = "Open the selected files";
} }
{ {
on = [ "<C-Enter>" ]; on = ["<C-Enter>"];
run = "open --interactive"; run = "open --interactive";
desc = "Open the selected files interactively"; desc = "Open the selected files interactively";
} # It's cool if you're using a terminal that supports CSI u } # It's cool if you're using a terminal that supports CSI u
{ {
on = [ "y" ]; on = ["y"];
run = "yank"; run = "yank";
desc = "Copy the selected files"; desc = "Copy the selected files";
} }
{ {
on = [ "x" ]; on = ["x"];
run = "yank --cut"; run = "yank --cut";
desc = "Cut the selected files"; desc = "Cut the selected files";
} }
{ {
on = [ "p" ]; on = ["p"];
run = "paste"; run = "paste";
desc = "Paste the files"; desc = "Paste the files";
} }
{ {
on = [ "P" ]; on = ["P"];
run = "paste --force"; run = "paste --force";
desc = "Paste the files (overwrite if the destination exists)"; desc = "Paste the files (overwrite if the destination exists)";
} }
{ {
on = [ "-" ]; on = ["-"];
run = "link"; run = "link";
desc = "Symlink the absolute path of files"; desc = "Symlink the absolute path of files";
} }
{ {
on = [ "_" ]; on = ["_"];
run = "link --relative"; run = "link --relative";
desc = "Symlink the relative path of files"; desc = "Symlink the relative path of files";
} }
{ {
on = [ "d" ]; on = ["d"];
run = "remove"; run = "remove";
desc = "Move the files to the trash"; desc = "Move the files to the trash";
} }
{ {
on = [ "D" ]; on = ["D"];
run = "remove --permanently"; run = "remove --permanently";
desc = "Permanently delete the files"; desc = "Permanently delete the files";
} }
{ {
on = [ "a" ]; on = ["a"];
run = "create"; run = "create";
desc = "Create a file or directory (ends with / for directories)"; desc = "Create a file or directory (ends with / for directories)";
} }
{ {
on = [ "r" ]; on = ["r"];
run = "rename"; run = "rename";
desc = "Rename a file or directory"; desc = "Rename a file or directory";
} }
{ {
on = [ ";" ]; on = [";"];
run = "shell"; run = "shell";
desc = "Run a shell command"; desc = "Run a shell command";
} }
{ {
on = [ ":" ]; on = [":"];
run = "shell --block"; run = "shell --block";
desc = "Run a shell command (block the UI until the command finishes)"; desc = "Run a shell command (block the UI until the command finishes)";
} }
{ {
on = [ "." ]; on = ["."];
run = "hidden toggle"; run = "hidden toggle";
desc = "Toggle the visibility of hidden files"; desc = "Toggle the visibility of hidden files";
} }
@ -363,17 +363,17 @@
desc = "Search files by content using ripgrep"; desc = "Search files by content using ripgrep";
} }
{ {
on = [ "<C-s>" ]; on = ["<C-s>"];
run = "search none"; run = "search none";
desc = "Cancel the ongoing search"; desc = "Cancel the ongoing search";
} }
{ {
on = [ "z" ]; on = ["z"];
run = "jump zoxide"; run = "jump zoxide";
desc = "Jump to a directory using zoxide"; desc = "Jump to a directory using zoxide";
} }
{ {
on = [ "Z" ]; on = ["Z"];
run = "jump fzf"; run = "jump fzf";
desc = "Jump to a directory or reveal a file using fzf"; desc = "Jump to a directory or reveal a file using fzf";
} }
@ -414,19 +414,19 @@
# Find # Find
{ {
on = [ "/" ]; on = ["/"];
run = "find --smart"; run = "find --smart";
} }
{ {
on = [ "?" ]; on = ["?"];
run = "find --previous --smart"; run = "find --previous --smart";
} }
{ {
on = [ "n" ]; on = ["n"];
run = "find_arrow"; run = "find_arrow";
} }
{ {
on = [ "N" ]; on = ["N"];
run = "find_arrow --previous"; run = "find_arrow --previous";
} }
@ -514,82 +514,82 @@
# Tabs # Tabs
{ {
on = [ "t" ]; on = ["t"];
run = "tab_create --current"; run = "tab_create --current";
desc = "Create a new tab using the current path"; desc = "Create a new tab using the current path";
} }
{ {
on = [ "1" ]; on = ["1"];
run = "tab_switch 0"; run = "tab_switch 0";
desc = "Switch to the first tab"; desc = "Switch to the first tab";
} }
{ {
on = [ "2" ]; on = ["2"];
run = "tab_switch 1"; run = "tab_switch 1";
desc = "Switch to the second tab"; desc = "Switch to the second tab";
} }
{ {
on = [ "3" ]; on = ["3"];
run = "tab_switch 2"; run = "tab_switch 2";
desc = "Switch to the third tab"; desc = "Switch to the third tab";
} }
{ {
on = [ "4" ]; on = ["4"];
run = "tab_switch 3"; run = "tab_switch 3";
desc = "Switch to the fourth tab"; desc = "Switch to the fourth tab";
} }
{ {
on = [ "5" ]; on = ["5"];
run = "tab_switch 4"; run = "tab_switch 4";
desc = "Switch to the fifth tab"; desc = "Switch to the fifth tab";
} }
{ {
on = [ "6" ]; on = ["6"];
run = "tab_switch 5"; run = "tab_switch 5";
desc = "Switch to the sixth tab"; desc = "Switch to the sixth tab";
} }
{ {
on = [ "7" ]; on = ["7"];
run = "tab_switch 6"; run = "tab_switch 6";
desc = "Switch to the seventh tab"; desc = "Switch to the seventh tab";
} }
{ {
on = [ "8" ]; on = ["8"];
run = "tab_switch 7"; run = "tab_switch 7";
desc = "Switch to the eighth tab"; desc = "Switch to the eighth tab";
} }
{ {
on = [ "9" ]; on = ["9"];
run = "tab_switch 8"; run = "tab_switch 8";
desc = "Switch to the ninth tab"; desc = "Switch to the ninth tab";
} }
{ {
on = [ "[" ]; on = ["["];
run = "tab_switch -1 --relative"; run = "tab_switch -1 --relative";
desc = "Switch to the previous tab"; desc = "Switch to the previous tab";
} }
{ {
on = [ "]" ]; on = ["]"];
run = "tab_switch 1 --relative"; run = "tab_switch 1 --relative";
desc = "Switch to the next tab"; desc = "Switch to the next tab";
} }
{ {
on = [ "{" ]; on = ["{"];
run = "tab_swap -1"; run = "tab_swap -1";
desc = "Swap the current tab with the previous tab"; desc = "Swap the current tab with the previous tab";
} }
{ {
on = [ "}" ]; on = ["}"];
run = "tab_swap 1"; run = "tab_swap 1";
desc = "Swap the current tab with the next tab"; desc = "Swap the current tab with the next tab";
} }
# Tasks # Tasks
{ {
on = [ "w" ]; on = ["w"];
run = "tasks_show"; run = "tasks_show";
desc = "Show the tasks manager"; desc = "Show the tasks manager";
} }
@ -638,7 +638,7 @@
# Help # Help
{ {
on = [ "~" ]; on = ["~"];
run = "help"; run = "help";
desc = "Open help"; desc = "Open help";
} }
@ -646,56 +646,56 @@
tasks.keymap = [ tasks.keymap = [
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "close"; run = "close";
desc = "Hide the task manager"; desc = "Hide the task manager";
} }
{ {
on = [ "<C-q>" ]; on = ["<C-q>"];
run = "close"; run = "close";
desc = "Hide the task manager"; desc = "Hide the task manager";
} }
{ {
on = [ "w" ]; on = ["w"];
run = "close"; run = "close";
desc = "Hide the task manager"; desc = "Hide the task manager";
} }
{ {
on = [ "k" ]; on = ["k"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "j" ]; on = ["j"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "<Up>" ]; on = ["<Up>"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "<Down>" ]; on = ["<Down>"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "inspect"; run = "inspect";
desc = "Inspect the task"; desc = "Inspect the task";
} }
{ {
on = [ "x" ]; on = ["x"];
run = "cancel"; run = "cancel";
desc = "Cancel the task"; desc = "Cancel the task";
} }
{ {
on = [ "~" ]; on = ["~"];
run = "help"; run = "help";
desc = "Open help"; desc = "Open help";
} }
@ -703,56 +703,56 @@
select.keymap = [ select.keymap = [
{ {
on = [ "<C-q>" ]; on = ["<C-q>"];
run = "close"; run = "close";
desc = "Cancel selection"; desc = "Cancel selection";
} }
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "close"; run = "close";
desc = "Cancel selection"; desc = "Cancel selection";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "close --submit"; run = "close --submit";
desc = "Submit the selection"; desc = "Submit the selection";
} }
{ {
on = [ "k" ]; on = ["k"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "j" ]; on = ["j"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "K" ]; on = ["K"];
run = "arrow -5"; run = "arrow -5";
desc = "Move cursor up 5 lines"; desc = "Move cursor up 5 lines";
} }
{ {
on = [ "J" ]; on = ["J"];
run = "arrow 5"; run = "arrow 5";
desc = "Move cursor down 5 lines"; desc = "Move cursor down 5 lines";
} }
{ {
on = [ "<Up>" ]; on = ["<Up>"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "<Down>" ]; on = ["<Down>"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "~" ]; on = ["~"];
run = "help"; run = "help";
desc = "Open help"; desc = "Open help";
} }
@ -760,39 +760,39 @@
input.keymap = [ input.keymap = [
{ {
on = [ "<C-q>" ]; on = ["<C-q>"];
run = "close"; run = "close";
desc = "Cancel input"; desc = "Cancel input";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "close --submit"; run = "close --submit";
desc = "Submit the input"; desc = "Submit the input";
} }
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "escape"; run = "escape";
desc = "Go back the normal mode or cancel input"; desc = "Go back the normal mode or cancel input";
} }
# Mode # Mode
{ {
on = [ "i" ]; on = ["i"];
run = "insert"; run = "insert";
desc = "Enter insert mode"; desc = "Enter insert mode";
} }
{ {
on = [ "a" ]; on = ["a"];
run = "insert --append"; run = "insert --append";
desc = "Enter append mode"; desc = "Enter append mode";
} }
{ {
on = [ "v" ]; on = ["v"];
run = "visual"; run = "visual";
desc = "Enter visual mode"; desc = "Enter visual mode";
} }
{ {
on = [ "V" ]; on = ["V"];
run = [ run = [
"move -999" "move -999"
"visual" "visual"
@ -803,28 +803,28 @@
# Navigation # Navigation
{ {
on = [ "h" ]; on = ["h"];
run = "move -1"; run = "move -1";
desc = "Move cursor left"; desc = "Move cursor left";
} }
{ {
on = [ "l" ]; on = ["l"];
run = "move 1"; run = "move 1";
desc = "Move cursor right"; desc = "Move cursor right";
} }
{ {
on = [ "0" ]; on = ["0"];
run = "move -999"; run = "move -999";
desc = "Move to the BOL"; desc = "Move to the BOL";
} }
{ {
on = [ "$" ]; on = ["$"];
run = "move 999"; run = "move 999";
desc = "Move to the EOL"; desc = "Move to the EOL";
} }
{ {
on = [ "I" ]; on = ["I"];
run = [ run = [
"move -999" "move -999"
"insert" "insert"
@ -832,7 +832,7 @@
desc = "Move to the BOL and enter insert mode"; desc = "Move to the BOL and enter insert mode";
} }
{ {
on = [ "A" ]; on = ["A"];
run = [ run = [
"move 999" "move 999"
"insert --append" "insert --append"
@ -841,40 +841,40 @@
} }
{ {
on = [ "<Left>" ]; on = ["<Left>"];
run = "move -1"; run = "move -1";
desc = "Move cursor left"; desc = "Move cursor left";
} }
{ {
on = [ "<Right>" ]; on = ["<Right>"];
run = "move 1"; run = "move 1";
desc = "Move cursor right"; desc = "Move cursor right";
} }
{ {
on = [ "b" ]; on = ["b"];
run = "backward"; run = "backward";
desc = "Move to the beginning of the previous word"; desc = "Move to the beginning of the previous word";
} }
{ {
on = [ "w" ]; on = ["w"];
run = "forward"; run = "forward";
desc = "Move to the beginning of the next word"; desc = "Move to the beginning of the next word";
} }
{ {
on = [ "e" ]; on = ["e"];
run = "forward --end-of-word"; run = "forward --end-of-word";
desc = "Move to the end of the next word"; desc = "Move to the end of the next word";
} }
# Deletion # Deletion
{ {
on = [ "d" ]; on = ["d"];
run = "delete --cut"; run = "delete --cut";
desc = "Cut the selected characters"; desc = "Cut the selected characters";
} }
{ {
on = [ "D" ]; on = ["D"];
run = [ run = [
"delete --cut" "delete --cut"
"move 999" "move 999"
@ -882,12 +882,12 @@
desc = "Cut until the EOL"; desc = "Cut until the EOL";
} }
{ {
on = [ "c" ]; on = ["c"];
run = "delete --cut --insert"; run = "delete --cut --insert";
desc = "Cut the selected characters and enter insert mode"; desc = "Cut the selected characters and enter insert mode";
} }
{ {
on = [ "C" ]; on = ["C"];
run = [ run = [
"delete --cut --insert" "delete --cut --insert"
"move 999" "move 999"
@ -895,7 +895,7 @@
desc = "Cut until the EOL and enter insert mode"; desc = "Cut until the EOL and enter insert mode";
} }
{ {
on = [ "x" ]; on = ["x"];
run = [ run = [
"delete --cut" "delete --cut"
"move 1 --in-operating" "move 1 --in-operating"
@ -905,36 +905,36 @@
# Yank/Paste # Yank/Paste
{ {
on = [ "y" ]; on = ["y"];
run = "yank"; run = "yank";
desc = "Copy the selected characters"; desc = "Copy the selected characters";
} }
{ {
on = [ "p" ]; on = ["p"];
run = "paste"; run = "paste";
desc = "Paste the copied characters after the cursor"; desc = "Paste the copied characters after the cursor";
} }
{ {
on = [ "P" ]; on = ["P"];
run = "paste --before"; run = "paste --before";
desc = "Paste the copied characters before the cursor"; desc = "Paste the copied characters before the cursor";
} }
# Undo/Redo # Undo/Redo
{ {
on = [ "u" ]; on = ["u"];
run = "undo"; run = "undo";
desc = "Undo the last operation"; desc = "Undo the last operation";
} }
{ {
on = [ "<C-r>" ]; on = ["<C-r>"];
run = "redo"; run = "redo";
desc = "Redo the last operation"; desc = "Redo the last operation";
} }
# Help # Help
{ {
on = [ "~" ]; on = ["~"];
run = "help"; run = "help";
desc = "Open help"; desc = "Open help";
} }
@ -942,58 +942,58 @@
help.keymap = [ help.keymap = [
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "escape"; run = "escape";
desc = "Clear the filter or hide the help"; desc = "Clear the filter or hide the help";
} }
{ {
on = [ "q" ]; on = ["q"];
run = "close"; run = "close";
desc = "Exit the process"; desc = "Exit the process";
} }
{ {
on = [ "<C-q>" ]; on = ["<C-q>"];
run = "close"; run = "close";
desc = "Hide the help"; desc = "Hide the help";
} }
# Navigation # Navigation
{ {
on = [ "k" ]; on = ["k"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "j" ]; on = ["j"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
{ {
on = [ "K" ]; on = ["K"];
run = "arrow -5"; run = "arrow -5";
desc = "Move cursor up 5 lines"; desc = "Move cursor up 5 lines";
} }
{ {
on = [ "J" ]; on = ["J"];
run = "arrow 5"; run = "arrow 5";
desc = "Move cursor down 5 lines"; desc = "Move cursor down 5 lines";
} }
{ {
on = [ "<Up>" ]; on = ["<Up>"];
run = "arrow -1"; run = "arrow -1";
desc = "Move cursor up"; desc = "Move cursor up";
} }
{ {
on = [ "<Down>" ]; on = ["<Down>"];
run = "arrow 1"; run = "arrow 1";
desc = "Move cursor down"; desc = "Move cursor down";
} }
# Filtering # Filtering
{ {
on = [ "/" ]; on = ["/"];
run = "filter"; run = "filter";
desc = "Apply a filter for the help items"; desc = "Apply a filter for the help items";
} }

View file

@ -9,7 +9,7 @@
stdenv.mkDerivation (final: { stdenv.mkDerivation (final: {
pname = "teams-pwa"; pname = "teams-pwa";
name = final.pname; name = final.pname;
nativeBuildInputs = [ copyDesktopItems ]; nativeBuildInputs = [copyDesktopItems];
dontUnpack = true; dontUnpack = true;
desktopItems = [ desktopItems = [
@ -21,15 +21,15 @@ stdenv.mkDerivation (final: {
} --app=https://teams.microsoft.com"; } --app=https://teams.microsoft.com";
desktopName = "Microsoft Teams PWA"; desktopName = "Microsoft Teams PWA";
genericName = "Progressive Web App for Microsoft Teams"; genericName = "Progressive Web App for Microsoft Teams";
categories = [ "Network" ]; categories = ["Network"];
mimeTypes = [ "x-scheme-handler/msteams" ]; mimeTypes = ["x-scheme-handler/msteams"];
}) })
]; ];
meta = with lib; { meta = with lib; {
description = "Microsoft Teams PWA"; description = "Microsoft Teams PWA";
homepage = "https://teams.microsoft.com"; homepage = "https://teams.microsoft.com";
maintainers = with maintainers; [ ners ]; maintainers = with maintainers; [ners];
platforms = chromium.meta.platforms; platforms = chromium.meta.platforms;
}; };
}) })