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

@ -1,24 +1,21 @@
# This is ABSOLUTE GARGABE, KDE srsly, remove this! # This is ABSOLUTE GARGABE, KDE srsly, remove this!
# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors # props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors
{ {
pkgs, pkgs,
config, config,
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
@ -164,7 +158,7 @@
default = "23.05"; default = "23.05";
type = lib.types.str; type = lib.types.str;
description = '' description = ''
System state version System state version
''; '';
}; };
homeStateVersion = lib.mkOption { homeStateVersion = lib.mkOption {
@ -172,10 +166,9 @@
example = "23.05"; example = "23.05";
type = lib.types.str; type = lib.types.str;
description = '' description = ''
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;
@ -43,7 +42,7 @@
]; ];
}; };
environment.extraInit = '' environment.extraInit = ''
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh"
''; '';
services = { services = {
# needed for GNOME services outside of GNOME Desktop # needed for GNOME services outside of GNOME Desktop
@ -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 {
@ -32,7 +31,7 @@
type = lib.types.str; type = lib.types.str;
description = '' description = ''
Scale used by the monitor in the login screen. Scale used by the monitor in the login screen.
By default the scale of the main monitor is used. By default the scale of the main monitor is used.
''; '';
}; };
resolution = lib.mkOption { resolution = lib.mkOption {
@ -40,7 +39,7 @@
example = "3440x1440@180"; example = "3440x1440@180";
type = lib.types.str; type = lib.types.str;
description = '' description = ''
Resolution/refreshrate used by the monitor in the login screen. Resolution/refreshrate used by the monitor in the login screen.
''; '';
}; };
environments = lib.mkOption { environments = lib.mkOption {
@ -54,13 +53,13 @@
''; '';
type = lib.types.lines; type = lib.types.lines;
description = '' description = ''
List of environments that should be available in the login prompt. List of environments that should be available in the login prompt.
''; '';
}; };
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,15 +84,15 @@
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;
background-color: none; background-color: none;
} }
box#main { box#main {
@ -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 {
@ -17,7 +16,7 @@
config = lib.mkOption { config = lib.mkOption {
default = ""; default = "";
example = '' example = ''
preload = path/to/wallpaper preload = path/to/wallpaper
wallpaper = YOURMONITOR,path/to/wallpaper wallpaper = YOURMONITOR,path/to/wallpaper
''; '';
type = lib.types.lines; type = lib.types.lines;
@ -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,27 +4,23 @@
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;
type = lib.types.bool; type = lib.types.bool;
example = true; example = true;
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;
}; };
}) })