Format with nixfmt-rfc

This commit is contained in:
DashieTM 2024-08-25 19:10:41 +02:00
parent 8c9f699269
commit a90a9c3a8e
60 changed files with 1756 additions and 1039 deletions

View file

@ -1,10 +1,19 @@
{ pkgs, config, lib, modulesPath, ... }: {
let username = config.conf.username; pkgs,
in { config,
lib,
modulesPath,
...
}:
let
username = config.conf.username;
in
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
# Bootloader. # Bootloader.
boot = { boot = {
consoleLogLevel = 0;
loader = { loader = {
systemd-boot = { systemd-boot = {
enable = true; enable = true;
@ -12,11 +21,26 @@ in {
}; };
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
}; };
plymouth = { enable = true; }; plymouth = {
enable = true;
};
kernelPackages = config.conf.kernel; kernelPackages = config.conf.kernel;
initrd.availableKernelModules = initrd = {
[ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; verbose = false;
kernelParams = [ ''resume="PARTLABEL=SWAP"'' ] ++ config.conf.boot_params; availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
};
kernelParams = [
''resume="PARTLABEL=SWAP"''
''quiet''
''udev.log_level=3''
] ++ config.conf.boot_params;
}; };
# Enable networking # Enable networking
@ -66,8 +90,7 @@ in {
# Enable sound with pipewire. # Enable sound with pipewire.
hardware = { hardware = {
pulseaudio.enable = false; pulseaudio.enable = false;
cpu.${config.conf.cpu}.updateMicrocode = cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
lib.mkDefault config.hardware.enableRedistributableFirmware;
}; };
security.rtkit.enable = true; security.rtkit.enable = true;
@ -92,7 +115,10 @@ in {
"video" "video"
"audio" "audio"
]; ];
packages = with pkgs; [ home-manager xdg-desktop-portal-gtk ]; packages = with pkgs; [
home-manager
xdg-desktop-portal-gtk
];
# this password will only last for the first login # this password will only last for the first login
# e.g. login, then change to whatever else, this also ensures no public hash is available # e.g. login, then change to whatever else, this also ensures no public hash is available
password = "firstlogin"; password = "firstlogin";

View file

@ -1 +1,7 @@
{ imports = [ ./env.nix ./xkb_layout.nix ./common_hardware.nix ]; } {
imports = [
./env.nix
./xkb_layout.nix
./common_hardware.nix
];
}

View file

@ -1,8 +1,8 @@
{ pkgs, config, ... }: { { pkgs, config, ... }:
{
environment = { environment = {
variables = { variables = {
GSETTINGS_SCHEMA_DIR = GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
"${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
NEOVIDE_MAXIMIZED = "0"; NEOVIDE_MAXIMIZED = "0";
GPG_TTY = "$(tty)"; GPG_TTY = "$(tty)";
EDITOR = "neovide --no-fork"; EDITOR = "neovide --no-fork";

View file

@ -10,7 +10,8 @@ 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'";

View file

@ -4,8 +4,7 @@
inputs = { inputs = {
dashvim.url = "github:DashieTM/DashVim"; dashvim.url = "github:DashieTM/DashVim";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
ironbar.url = ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
"github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
anyrun.url = "github:Kirottu/anyrun"; anyrun.url = "github:Kirottu/anyrun";
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
stable.url = "github:NixOs/nixpkgs/nixos-24.05"; stable.url = "github:NixOs/nixpkgs/nixos-24.05";
@ -22,9 +21,10 @@
}; };
}; };
outputs = { ... }@inputs: { outputs =
nixosConfigurations = { ... }@inputs:
(inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.); {
nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.);
}; };
nixConfig = { nixConfig = {

View file

@ -24,7 +24,12 @@
drive = { drive = {
device = "/dev/disk/by-label/BOOT"; device = "/dev/disk/by-label/BOOT";
fsType = "vfat"; fsType = "vfat";
options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; options = [
"rw"
"fmask=0022"
"dmask=0022"
"noatime"
];
}; };
} }
{ {
@ -32,7 +37,11 @@
drive = { drive = {
device = "/dev/disk/by-label/ROOT"; device = "/dev/disk/by-label/ROOT";
fsType = "ext4"; fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ]; options = [
"noatime"
"nodiratime"
"discard"
];
}; };
} }
]; ];
@ -50,6 +59,8 @@
kde_connect.enable = true; kde_connect.enable = true;
# TODO change this to your main resolution # TODO change this to your main resolution
# -> this will be your login manager # -> this will be your login manager
greetd = { resolution = "3440x1440@180"; }; greetd = {
resolution = "3440x1440@180";
};
}; };
} }

View file

@ -5,7 +5,9 @@
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
stable.url = "github:NixOs/nixpkgs/nixos-24.05"; stable.url = "github:NixOs/nixpkgs/nixos-24.05";
nix-flatpak = { url = "github:gmodena/nix-flatpak"; }; nix-flatpak = {
url = "github:gmodena/nix-flatpak";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
@ -23,8 +25,7 @@
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
ironbar = { ironbar = {
url = url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
"github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048";
}; };
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
@ -47,11 +48,14 @@
}; };
}; };
outputs = { ... }@inputs: outputs =
{ ... }@inputs:
let let
stable = import inputs.stable { stable = import inputs.stable {
system = "x86_64-linux"; system = "x86_64-linux";
config = { allowUnfree = true; }; config = {
allowUnfree = true;
};
}; };
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
system = "x86_64-linux"; system = "x86_64-linux";
@ -61,7 +65,8 @@
allowUnfree = true; allowUnfree = true;
}; };
}; };
in { in
{
dashNixLib = import ./lib { inherit inputs pkgs; }; dashNixLib = import ./lib { inherit inputs pkgs; };
dashNixInputs = inputs; dashNixInputs = inputs;
stablePkgs = stable; stablePkgs = stable;

View file

@ -1,6 +1,13 @@
{ config, lib, options, ... }: {
let username = config.conf.username; config,
in { lib,
options,
...
}:
let
username = config.conf.username;
in
{
manual = { manual = {
html.enable = false; html.enable = false;
json.enable = false; json.enable = false;
@ -17,7 +24,9 @@ in {
sessionPath = [ "$HOME/.cargo/bin" ]; sessionPath = [ "$HOME/.cargo/bin" ];
sessionVariables = { GOROOT = "$HOME/.go"; }; sessionVariables = {
GOROOT = "$HOME/.go";
};
keyboard = null; keyboard = null;

View file

@ -1,4 +1,13 @@
{ inputs, pkgs, config, lib, mod, additionalHomeConfig, root, ... }: {
inputs,
pkgs,
config,
lib,
mod,
additionalHomeConfig,
root,
...
}:
let let
base_imports = [ base_imports = [
inputs.anyrun.homeManagerModules.default inputs.anyrun.homeManagerModules.default
@ -16,7 +25,8 @@ let
inputs.dashvim.homeManagerModules.dashvim inputs.dashvim.homeManagerModules.dashvim
../modules ../modules
]; ];
in { in
{
xdg = { xdg = {
portal.config.common.default = "*"; portal.config.common.default = "*";
portal = { portal = {
@ -27,13 +37,21 @@ in {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
extraSpecialArgs = { inherit inputs root; }; extraSpecialArgs = {
inherit inputs root;
};
users.${config.conf.username} = { users.${config.conf.username} = {
imports = [ ./common.nix ./xdg.nix ./themes ./sync.nix ] ++ base_imports imports =
[
./common.nix
./xdg.nix
./themes
./sync.nix
]
++ base_imports
++ lib.optional (builtins.pathExists mod) mod ++ lib.optional (builtins.pathExists mod) mod
++ lib.optional (builtins.pathExists additionalHomeConfig) ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig;
additionalHomeConfig;
}; };
}; };
} }

View file

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

View file

@ -1,4 +1,9 @@
{ config, inputs, pkgs, ... }: {
config,
inputs,
pkgs,
...
}:
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
@ -22,10 +27,17 @@ let
border: none; border: none;
} }
''; '';
in { in
xdg.configFile."qt5ct/colors/tokyonight.conf" = { text = "${color}"; }; {
xdg.configFile."qt6ct/colors/tokyonight.conf" = { text = "${color}"; }; xdg.configFile."qt5ct/colors/tokyonight.conf" = {
xdg.configFile."qt5ct/qss/tab.qss" = { text = "${qss}"; }; text = "${color}";
};
xdg.configFile."qt6ct/colors/tokyonight.conf" = {
text = "${color}";
};
xdg.configFile."qt5ct/qss/tab.qss" = {
text = "${qss}";
};
xdg.configFile."qt5ct/qt5ct.conf" = { xdg.configFile."qt5ct/qt5ct.conf" = {
text = '' text = ''
[Appearance] [Appearance]
@ -101,4 +113,3 @@ in {
''; '';
}; };
} }

View file

@ -7,23 +7,42 @@ let
videoPlayer = [ "mpv" ]; videoPlayer = [ "mpv" ];
audioPlayer = [ "io.bassi.Amberol" ]; audioPlayer = [ "io.bassi.Amberol" ];
xdgAssociations = type: program: list: xdgAssociations =
builtins.listToAttrs (map (e: { type: program: list:
builtins.listToAttrs (
map (e: {
name = "${type}/${e}"; name = "${type}/${e}";
value = program; value = program;
}) list); }) list
);
image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ]; image = xdgAssociations "image" imageViewer [
video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ]; "png"
audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ]; "svg"
browserTypes = (xdgAssociations "application" browser [ "jpeg"
"gif"
];
video = xdgAssociations "video" videoPlayer [
"mp4"
"avi"
"mkv"
];
audio = xdgAssociations "audio" audioPlayer [
"mp3"
"flac"
"wav"
"aac"
];
browserTypes =
(xdgAssociations "application" browser [
"json" "json"
"x-extension-htm" "x-extension-htm"
"x-extension-html" "x-extension-html"
"x-extension-shtml" "x-extension-shtml"
"x-extension-xht" "x-extension-xht"
"x-extension-xhtml" "x-extension-xhtml"
]) // (xdgAssociations "x-scheme-handler" browser [ ])
// (xdgAssociations "x-scheme-handler" browser [
"about" "about"
"ftp" "ftp"
"http" "http"
@ -32,14 +51,21 @@ let
]); ]);
# XDG MIME types # XDG MIME types
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({ associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) (
{
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ];
"text/html" = browser; "text/html" = browser;
"text/plain" = [ "neovide" ]; "text/plain" = [ "neovide" ];
"x-scheme-handler/chrome" = [ "com.brave.browser" ]; "x-scheme-handler/chrome" = [ "com.brave.browser" ];
"inode/directory" = [ "yazi" ]; "inode/directory" = [ "yazi" ];
} // image // video // audio // browserTypes); }
in { // image
// video
// audio
// browserTypes
);
in
{
xdg = { xdg = {
enable = true; enable = true;
cacheHome = config.home.homeDirectory + "/.local/cache"; cacheHome = config.home.homeDirectory + "/.local/cache";

View file

@ -1,6 +1,8 @@
{ inputs, pkgs, ... }: { inputs, pkgs, ... }:
{ {
/** /**
# 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.

View file

@ -1,11 +1,23 @@
{ lib, config, pkgs, options, ... }: { {
lib,
config,
pkgs,
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 = with lib.types; type =
(enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]); with lib.types;
(enum [
"x86_64-linux"
"aarch64-linux"
"aarch64-linux-android"
]);
example = "aarch64-linux"; example = "aarch64-linux";
description = '' description = ''
System architecture. System architecture.
@ -15,7 +27,12 @@
cpu = lib.mkOption { cpu = lib.mkOption {
# TODO: how to enable arm? # TODO: how to enable arm?
default = "amd"; default = "amd";
type = with lib.types; (enum [ "amd" "intel" ]); type =
with lib.types;
(enum [
"amd"
"intel"
]);
example = "intel"; example = "intel";
description = '' description = ''
cpu microcode. cpu microcode.
@ -43,10 +60,12 @@
ironbar = { ironbar = {
modules = lib.mkOption { modules = lib.mkOption {
default = [ ]; default = [ ];
example = [{ example = [
{
type = "upower"; type = "upower";
class = "memory-usage"; class = "memory-usage";
}]; }
];
type = with lib.types; listOf attrs; type = with lib.types; listOf attrs;
description = '' description = ''
Adds modules to ironbar. Adds modules to ironbar.
@ -129,8 +148,16 @@
}; };
nvim-colorscheme = lib.mkOption { nvim-colorscheme = lib.mkOption {
default = { tokyonight = { enable = true; }; }; default = {
example = { catppuccin = { enable = true; }; }; tokyonight = {
enable = true;
};
};
example = {
catppuccin = {
enable = true;
};
};
type = lib.types.attrs; type = lib.types.attrs;
description = '' description = ''
nixvim colorscheme. nixvim colorscheme.
@ -167,10 +194,8 @@
}; };
config = { config = {
conf.kernel = conf.kernel = lib.mkIf (
lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel) config.mods.gaming.enable && config.mods.gaming.kernel
pkgs.linuxPackages_xanmod_latest; ) pkgs.linuxPackages_xanmod_latest;
} // (lib.optionalAttrs (options ? system.stateVersion) { } // (lib.optionalAttrs (options ? system.stateVersion) { system.stateVersion = "unstable"; });
system.stateVersion = "unstable";
});
} }

View file

@ -1 +1,6 @@
{ imports = [ ./programs ./conf.nix ]; } {
imports = [
./programs
./conf.nix
];
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods = { options.mods = {
acpid.enable = lib.mkOption { acpid.enable = lib.mkOption {
@ -11,9 +17,7 @@
}; };
}; };
config = lib.mkIf config.mods.acpid.enable config = lib.mkIf config.mods.acpid.enable (
(lib.optionalAttrs (options ? virtualisation.virtualbox.host) { lib.optionalAttrs (options ? virtualisation.virtualbox.host) { services.acpid.enable = true; }
services.acpid.enable = true; );
});
} }

View file

@ -1,4 +1,12 @@
{ config, lib, options, pkgs, inputs, ... }: { {
config,
lib,
options,
pkgs,
inputs,
...
}:
{
options.mods = { options.mods = {
default_base_packages = { default_base_packages = {
enable = lib.mkOption { enable = lib.mkOption {
@ -21,11 +29,12 @@
}; };
}; };
config = (lib.optionalAttrs (options ? environment.systemPackages) { config = (
environment.systemPackages = lib.optionalAttrs (options ? environment.systemPackages) {
config.mods.default_base_packages.additional_packages; environment.systemPackages = config.mods.default_base_packages.additional_packages;
} // (lib.mkIf config.mods.default_base_packages.enable }
(lib.optionalAttrs (options ? environment.systemPackages) { // (lib.mkIf config.mods.default_base_packages.enable (
lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
openssl openssl
dbus dbus
@ -84,7 +93,10 @@
programs = { programs = {
nix-ld = { nix-ld = {
enable = true; enable = true;
libraries = with pkgs; [ jdk zlib ]; libraries = with pkgs; [
jdk
zlib
];
}; };
direnv = { direnv = {
package = pkgs.direnv; package = pkgs.direnv;
@ -99,5 +111,7 @@
ssh.startAgent = true; ssh.startAgent = true;
gnupg.agent.enable = true; gnupg.agent.enable = true;
}; };
}))); }
))
);
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods = { options.mods = {
bluetooth.enable = lib.mkOption { bluetooth.enable = lib.mkOption {
default = false; default = false;
@ -10,12 +16,12 @@
}; };
}; };
config = lib.mkIf config.mods.bluetooth.enable config = lib.mkIf config.mods.bluetooth.enable (
(lib.optionalAttrs (options ? hardware.bluetooth) { lib.optionalAttrs (options ? hardware.bluetooth) {
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;
}; };
});
} }
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, pkgs, options, ... }: { {
lib,
config,
pkgs,
options,
...
}:
{
options.mods = { options.mods = {
coding = { coding = {
enable = lib.mkOption { enable = lib.mkOption {
@ -28,8 +35,8 @@
}; };
}; };
config = lib.mkIf config.mods.coding.enable config = 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 {
enable = true; enable = true;
colorscheme = config.mods.stylix.colorscheme; colorscheme = config.mods.stylix.colorscheme;
@ -141,5 +148,6 @@
tmate tmate
]; ];
}); }
);
} }

View file

@ -1,4 +1,9 @@
{ lib, config, options, ... }: {
lib,
config,
options,
...
}:
let let
driveModule = lib.types.submodule { driveModule = lib.types.submodule {
@ -19,12 +24,17 @@ let
example = { example = {
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ]; options = [
"noatime"
"nodiratime"
"discard"
];
}; };
}; };
}; };
}; };
in { in
{
options.mods = { options.mods = {
useSwap = { useSwap = {
enable = lib.mkOption { enable = lib.mkOption {
@ -50,14 +60,20 @@ in {
default = [ default = [
]; ];
example = [{ example = [
{
name = "drive2"; name = "drive2";
drive = { drive = {
device = "/dev/disk/by-label/DRIVE2"; device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4"; fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ]; options = [
"noatime"
"nodiratime"
"discard"
];
}; };
}]; }
];
# TODO: how to make this work # TODO: how to make this work
# type = with lib.types; listOf (attrsOf driveModule); # type = with lib.types; listOf (attrsOf driveModule);
type = with lib.types; listOf (attrsOf anything); type = with lib.types; listOf (attrsOf anything);
@ -67,33 +83,52 @@ in {
}; };
}; };
config = (lib.optionalAttrs (options ? fileSystems) { config = (
fileSystems = builtins.listToAttrs (map ({ name, drive }: { lib.optionalAttrs (options ? fileSystems) {
fileSystems =
builtins.listToAttrs (
map (
{ name, drive }:
{
name = "/" + name; name = "/" + name;
value = drive; value = drive;
}) config.mods.extraDrives) }
) config.mods.extraDrives
)
// (lib.optionalAttrs config.mods.defaultDrives.enable) { // (lib.optionalAttrs config.mods.defaultDrives.enable) {
"/" = { "/" = {
device = "/dev/disk/by-label/ROOT"; device = "/dev/disk/by-label/ROOT";
fsType = "btrfs"; fsType = "btrfs";
options = [ "noatime" "nodiratime" "discard" ]; options = [
"noatime"
"nodiratime"
"discard"
];
}; };
"/boot" = { "/boot" = {
device = "/dev/disk/by-label/BOOT"; device = "/dev/disk/by-label/BOOT";
fsType = "vfat"; fsType = "vfat";
options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; options = [
"rw"
"fmask=0022"
"dmask=0022"
"noatime"
];
}; };
"/home" = { "/home" = {
device = "/dev/disk/by-label/HOME"; device = "/dev/disk/by-label/HOME";
fsType = "btrfs"; fsType = "btrfs";
options = [ "noatime" "nodiratime" "discard" ]; options = [
"noatime"
"nodiratime"
"discard"
];
}; };
}; };
# 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.useSwap.enable [{ swapDevices = lib.mkIf config.mods.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ];
device = "/dev/disk/by-label/SWAP"; }
}]; );
});
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.firefox = { options.mods.firefox = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -56,8 +63,8 @@
description = "Firefox extensions (from nur)"; description = "Firefox extensions (from nur)";
}; };
}; };
config = lib.mkIf config.mods.firefox.enable config = lib.mkIf config.mods.firefox.enable (
(lib.optionalAttrs (options ? programs.firefox.profiles) { lib.optionalAttrs (options ? programs.firefox.profiles) {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
policies = config.mods.firefox.configuration; policies = config.mods.firefox.configuration;
@ -72,5 +79,6 @@
extensions = config.mods.firefox.extensions; extensions = config.mods.firefox.extensions;
}; };
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.fish = { options.mods.fish = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +14,8 @@
description = "Enables fish"; description = "Enables fish";
}; };
}; };
config = lib.mkIf config.mods.fish.enable config = lib.mkIf config.mods.fish.enable (
(lib.optionalAttrs (options ? programs.fish) { lib.optionalAttrs (options ? programs.fish) {
programs.fish = { programs.fish = {
enable = true; enable = true;
shellInit = '' shellInit = ''
@ -147,5 +154,6 @@
direnv hook fish | source direnv hook fish | source
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.flatpak = { options.mods.flatpak = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -13,18 +20,22 @@
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) {
services.flatpak.remotes = lib.mkOptionDefault [{ services.flatpak.remotes = lib.mkOptionDefault [
{
name = "flathub-stable"; name = "flathub-stable";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}]; }
];
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 :) # fallback if necessary, but generally avoided as nix is superior :)
# default flatseal installation since flatpak permissions are totally not a broken idea # default flatseal installation since flatpak permissions are totally not a broken idea
"com.github.tchx84.Flatseal" "com.github.tchx84.Flatseal"
] ++ config.mods.flatpak.additional_packages; ] ++ config.mods.flatpak.additional_packages;
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.gaming = { options.mods.gaming = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -7,7 +14,14 @@
description = "Enabled gaming related features."; description = "Enabled gaming related features.";
}; };
tools = lib.mkOption { tools = lib.mkOption {
default = with pkgs; [ gamemode steam lutris wine adwsteamgtk heroic ]; default = with pkgs; [
gamemode
steam
lutris
wine
adwsteamgtk
heroic
];
example = [ ]; example = [ ];
type = with lib.types; listOf package; type = with lib.types; listOf package;
description = "Install gaming related packages"; description = "Install gaming related packages";
@ -34,8 +48,7 @@
default = true; default = true;
example = false; example = false;
type = lib.types.bool; type = lib.types.bool;
description = description = "Whether to use GPU performance setting. NOTE: this is at your own risk!";
"Whether to use GPU performance setting. NOTE: this is at your own risk!";
}; };
gpu_device = lib.mkOption { gpu_device = lib.mkOption {
default = 0; default = 0;
@ -44,8 +57,8 @@
description = "Your gpu device.(Physical id of lshw)"; description = "Your gpu device.(Physical id of lshw)";
}; };
}; };
config = lib.mkIf config.mods.gaming.enable config = lib.mkIf config.mods.gaming.enable (
(lib.optionalAttrs (options ? environment.systemPackages) { lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = config.mods.gaming.tools; environment.systemPackages = config.mods.gaming.tools;
programs.steam.enable = config.mods.gaming.steam; programs.steam.enable = config.mods.gaming.steam;
@ -53,7 +66,9 @@
programs.gamemode = { programs.gamemode = {
enableRenice = true; enableRenice = true;
settings = { settings = {
general = { governor = "performance"; }; general = {
governor = "performance";
};
gpu = lib.mkIf config.mods.gaming.gpu_optimization { gpu = lib.mkIf config.mods.gaming.gpu_optimization {
apply_gpu_optimisations = "accept-responsibility"; apply_gpu_optimisations = "accept-responsibility";
gpu_device = config.mods.gaming.gpu_device; gpu_device = config.mods.gaming.gpu_device;
@ -66,5 +81,6 @@
}; };
}; };
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.git = { options.mods.git = {
username = lib.mkOption { username = lib.mkOption {
default = "DashieTM"; default = "DashieTM";
@ -15,19 +22,9 @@
ssh_config = lib.mkOption { ssh_config = lib.mkOption {
default = '' default = ''
Host github.com Host github.com
${ ${if (config.sops.secrets ? hub.path) then "IdentityFile ${config.sops.secrets.hub.path}" else ""}
if (config.sops.secrets ? hub.path) then
"IdentityFile ${config.sops.secrets.hub.path}"
else
""
}
Host gitlab.com Host gitlab.com
${ ${if (config.sops.secrets ? lab.path) then "IdentityFile ${config.sops.secrets.lab.path}" else ""}
if (config.sops.secrets ? lab.path) then
"IdentityFile ${config.sops.secrets.lab.path}"
else
""
}
Host dashie.org Host dashie.org
${ ${
if (config.sops.secrets ? dashie.path) then if (config.sops.secrets ? dashie.path) then
@ -41,16 +38,22 @@
description = "ssh configuration (keys for git)"; description = "ssh configuration (keys for git)";
}; };
}; };
config = (lib.optionalAttrs (options ? programs.git && options ? home.file) { config = (
lib.optionalAttrs (options ? programs.git && options ? home.file) {
programs.git = { programs.git = {
enable = true; enable = true;
userName = config.mods.git.username; userName = config.mods.git.username;
userEmail = config.mods.git.email; userEmail = config.mods.git.email;
extraConfig = { extraConfig = {
merge = { tool = "nvimdiff"; }; merge = {
diff = { tool = "nvimdiff"; }; tool = "nvimdiff";
};
diff = {
tool = "nvimdiff";
};
}; };
}; };
home.file.".ssh/config".text = config.mods.git.ssh_config; home.file.".ssh/config".text = config.mods.git.ssh_config;
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
gnome_services.enable = lib.mkOption { gnome_services.enable = lib.mkOption {
default = true; default = true;
@ -11,17 +18,26 @@
}; };
}; };
config = lib.mkIf config.mods.gnome_services.enable config = lib.mkIf config.mods.gnome_services.enable (
(lib.optionalAttrs (options ? services.gnome.gnome-keyring) { lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
programs.dconf.enable = true; programs.dconf.enable = true;
services = { services = {
# needed for GNOME services outside of GNOME Desktop # needed for GNOME services outside of GNOME Desktop
dbus.packages = with pkgs; [ gcr gnome.gnome-settings-daemon ]; dbus.packages = with pkgs; [
gcr
gnome.gnome-settings-daemon
];
gnome.gnome-keyring.enable = true; gnome.gnome-keyring.enable = true;
gvfs.enable = true; gvfs.enable = true;
}; };
} // lib.optionalAttrs (options ? home.packages) { }
home.packages = with pkgs; [ nautilus sushi nautilus-python ]; // lib.optionalAttrs (options ? home.packages) {
}); home.packages = with pkgs; [
nautilus
sushi
nautilus-python
];
}
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
nvidia.enable = lib.mkOption { nvidia.enable = lib.mkOption {
@ -37,8 +44,8 @@
}; };
}; };
config = lib.mkIf config.mods.vapi.enable config = lib.mkIf config.mods.vapi.enable (
(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" ];
@ -46,20 +53,27 @@
}; };
hardware = { hardware = {
graphics = let graphics =
base_packages = let
[ pkgs.libvdpau-va-gl pkgs.vaapiVdpau pkgs.mesa.drivers ]; base_packages = [
rocm_packages = pkgs.libvdpau-va-gl
[ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ]; pkgs.vaapiVdpau
in { pkgs.mesa.drivers
];
rocm_packages = [
pkgs.rocmPackages.clr.icd
pkgs.rocm-opencl-runtime
];
in
{
enable = true; enable = true;
enable32Bit = lib.mkDefault true; enable32Bit = lib.mkDefault true;
extraPackages = base_packages extraPackages = base_packages ++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
}; };
}; };
} // lib.optionalAttrs (options ? hardware.graphics) }
(lib.mkIf config.mods.nvidia.enable { // lib.optionalAttrs (options ? hardware.graphics) (
lib.mkIf config.mods.nvidia.enable {
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
# powerManagement.enable = false; # powerManagement.enable = false;
@ -69,5 +83,7 @@
package = config.boot.kernelPackages.nvidiaPackages.beta; package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
})); }
)
);
} }

View file

@ -1,4 +1,12 @@
{ config, lib, inputs, pkgs, options, ... }: { {
config,
lib,
inputs,
pkgs,
options,
...
}:
{
options.mods = { options.mods = {
greetd = { greetd = {
enable = lib.mkOption { enable = lib.mkOption {
@ -38,7 +46,8 @@
}; };
}; };
config = let config =
let
username = config.conf.username; username = config.conf.username;
session = { session = {
command = "${ command = "${
@ -46,15 +55,18 @@
} --config /etc/greetd/hyprgreet.conf"; } --config /etc/greetd/hyprgreet.conf";
user = username; user = username;
}; };
in lib.mkIf config.mods.greetd.enable in
(lib.optionalAttrs (options ? environment) { lib.mkIf config.mods.greetd.enable (
services.xserver.displayManager.session = [{ lib.optionalAttrs (options ? environment) {
services.xserver.displayManager.session = [
{
manage = "desktop"; manage = "desktop";
name = "Hyprland"; name = "Hyprland";
start = '' start = ''
${lib.getExe pkgs.hyprland} & waitPID=$! ${lib.getExe pkgs.hyprland} & waitPID=$!
''; '';
}]; }
];
# greetd display manager # greetd display manager
programs.hyprland.enable = true; programs.hyprland.enable = true;
@ -83,15 +95,23 @@
force_no_accel = true force_no_accel = true
} }
cursor {
enable_hyprcursor = false
}
misc { misc {
disable_splash_rendering = false disable_splash_rendering = false
disable_hyprland_logo = false disable_hyprland_logo = false
} }
env=XCURSOR_THEME,${config.mods.stylix.cursor.name}
env=XCURSOR_SIZE,${config.mods.stylix.cursor.size}
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
''; '';
# unlock GPG keyring on login # unlock GPG keyring on login
security.pam.services.greetd.enableGnomeKeyring = true; security.pam.services.greetd.enableGnomeKeyring = true;
}); }
);
} }

View file

@ -1,4 +1,12 @@
{ lib, options, config, pkgs, inputs, ... }: { {
lib,
options,
config,
pkgs,
inputs,
...
}:
{
options.mods.home_packages = { options.mods.home_packages = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -16,10 +24,12 @@
''; '';
}; };
}; };
config = (lib.optionalAttrs (options ? home.packages) { config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.home_packages.additional_packages; home.packages = config.mods.home_packages.additional_packages;
} // (lib.mkIf config.mods.home_packages.enable }
(lib.optionalAttrs (options ? home.packages) { // (lib.mkIf config.mods.home_packages.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [
nheko nheko
nextcloud-client nextcloud-client
@ -62,9 +72,10 @@
brightnessctl brightnessctl
]; ];
xdg.configFile."direnv/direnv.toml".source = xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" {
(pkgs.formats.toml { }).generate "direnv" { global = {
global = { warn_timeout = "-1s"; }; warn_timeout = "-1s";
};
}; };
#my own programs #my own programs
@ -82,5 +93,7 @@
}; };
}; };
}; };
}))); }
))
);
} }

View file

@ -1,4 +1,12 @@
{ lib, config, pkgs, options, inputs, ... }: { {
lib,
config,
pkgs,
options,
inputs,
...
}:
{
options.mods = { options.mods = {
hyprland.anyrun = { hyprland.anyrun = {
enable = lib.mkOption { enable = lib.mkOption {
@ -10,8 +18,8 @@
}; };
}; };
config = lib.mkIf config.mods.hyprland.anyrun.enable config = lib.mkIf config.mods.hyprland.anyrun.enable (
(lib.optionalAttrs (options ? programs.anyrun) { lib.optionalAttrs (options ? programs.anyrun) {
programs.anyrun = { programs.anyrun = {
enable = true; enable = true;
config = { config = {
@ -23,8 +31,12 @@
]; ];
#position = "center"; #position = "center";
hideIcons = false; hideIcons = false;
width = { fraction = 0.3; }; width = {
y = { fraction = 0.5; }; fraction = 0.3;
};
y = {
fraction = 0.5;
};
layer = "overlay"; layer = "overlay";
hidePluginInfo = true; hidePluginInfo = true;
closeOnClick = true; closeOnClick = true;
@ -79,5 +91,6 @@
} }
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: { {
config,
lib,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
hyprland = { hyprland = {
enable = lib.mkOption { enable = lib.mkOption {
@ -61,8 +68,8 @@
}; };
}; };
config = lib.mkIf config.mods.hyprland.enable config = lib.mkIf config.mods.hyprland.enable (
(lib.optionalAttrs (options ? wayland.windowManager.hyprland) { lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
# install Hyprland related packages # install Hyprland related packages
home.packages = with pkgs; [ home.packages = with pkgs; [
xorg.xprop xorg.xprop
@ -82,15 +89,16 @@
lib.mkIf config.mods.hyprland.use_default_config { lib.mkIf config.mods.hyprland.use_default_config {
"$mod" = "SUPER"; "$mod" = "SUPER";
bindm = bindm = [
[ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; "$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bind = [ bind = [
# screenshots # screenshots
''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy''
''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -''
'' ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
# regular programs # regular programs
"$mod SUPER,F,exec,firefox" "$mod SUPER,F,exec,firefox"
@ -108,19 +116,14 @@
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
# media keys # media keys
(lib.mkIf config.mods.scripts.audio-control (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute")
",XF86AudioMute,exec, audio-control mute") (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%")
(lib.mkIf config.mods.scripts.audio-control (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%")
",XF86AudioLowerVolume,exec, audio-control sink -5%")
(lib.mkIf config.mods.scripts.audio-control
",XF86AudioRaiseVolume,exec, audio-control sink +5%")
",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioPlay,exec, playerctl play-pause"
",XF86AudioNext,exec, playerctl next" ",XF86AudioNext,exec, playerctl next"
",XF86AudioPrev,exec, playerctl previous" ",XF86AudioPrev,exec, playerctl previous"
(lib.mkIf config.mods.scripts.change-brightness (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-")
",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%")
(lib.mkIf config.mods.scripts.change-brightness
",XF86MonBrightnessUp,exec, change-brightness brightness +10%")
# hyprland keybinds # hyprland keybinds
# misc # misc
@ -199,13 +202,14 @@
general = { general = {
gaps_out = "3,5,5,5"; gaps_out = "3,5,5,5";
border_size = 3; border_size = 3;
"col.active_border" = "col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
# "col.inactive_border" = "0x66333333"; # "col.inactive_border" = "0x66333333";
allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true;
}; };
decoration = { rounding = 4; }; decoration = {
rounding = 4;
};
animations = { animations = {
bezier = "penguin,0.05,0.9,0.1,1.0"; bezier = "penguin,0.05,0.9,0.1,1.0";
@ -254,7 +258,9 @@
# no_break_fs_vrr = true; # no_break_fs_vrr = true;
}; };
gestures = { workspace_swipe = true; }; gestures = {
workspace_swipe = true;
};
monitor = config.mods.hyprland.monitor; monitor = config.mods.hyprland.monitor;
workspace = config.mods.hyprland.workspace; workspace = config.mods.hyprland.workspace;
@ -265,10 +271,10 @@
"XDG_CURRENT_DESKTOP=Hyprland" "XDG_CURRENT_DESKTOP=Hyprland"
"XDG_SESSION_TYPE=wayland" "XDG_SESSION_TYPE=wayland"
"XDG_SESSION_DESKTOP=Hyprland" "XDG_SESSION_DESKTOP=Hyprland"
"HYPRCURSOR_THEME,Bibata-Modern-Classic" "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}"
"HYPRCURSOR_SIZE,24" "HYPRCURSOR_SIZE,${config.mods.stylix.cursor.size}"
"XCURSOR_THEME,Bibata-Modern-Classic" "XCURSOR_THEME,${config.mods.stylix.cursor.name}"
"XCURSOR_SIZE,24" "XCURSOR_SIZE,${config.mods.stylix.cursor.size}"
"QT_QPA_PLATFORM,wayland" "QT_QPA_PLATFORM,wayland"
"QT_QPA_PLATFORMTHEME,qt5ct" "QT_QPA_PLATFORMTHEME,qt5ct"
"QT_WAYLAND_FORCE_DPI,96" "QT_WAYLAND_FORCE_DPI,96"
@ -282,8 +288,7 @@
(lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") (lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia")
(lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland") (lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland")
(lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm") (lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm")
(lib.mkIf config.mods.nvidia.enable (lib.mkIf config.mods.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia")
"__GLX_VENDOR_LIBRARY_NAME,nvidia")
]; ];
layerrule = [ layerrule = [
@ -338,9 +343,11 @@
# ]; # ];
# }; # };
# }; # };
} // config.mods.hyprland.custom_config; }
// config.mods.hyprland.custom_config;
# wayland.windowManager.hyprland.plugins = [ # wayland.windowManager.hyprland.plugins = [
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
# ]; # ];
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: { {
config,
lib,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
hyprland.hyprlock = { hyprland.hyprlock = {
enable = lib.mkOption { enable = lib.mkOption {
@ -10,33 +17,40 @@
}; };
}; };
config = lib.mkIf config.mods.hyprland.hyprlock.enable config = lib.mkIf config.mods.hyprland.hyprlock.enable (
(lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
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 = {
background = [{ background = [
{
monitor = ""; monitor = "";
path = ""; path = "";
color = "rgba(26, 27, 38, 1.0)"; color = "rgba(26, 27, 38, 1.0)";
}]; }
];
input-field = [{ input-field = [
{
monitor = "${config.conf.monitor}"; monitor = "${config.conf.monitor}";
placeholder_text = "password or something"; placeholder_text = "password or something";
}]; }
];
label = [{ label = [
{
monitor = "${config.conf.monitor}"; monitor = "${config.conf.monitor}";
text = "$TIME"; text = "$TIME";
font_size = 50; font_size = 50;
position = "0, 200"; position = "0, 200";
valign = "center"; valign = "center";
halign = "center"; halign = "center";
}]; }
}; ];
}; };
}); };
}
);
} }

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: { {
config,
lib,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
hyprland.hyprpaper = { hyprland.hyprpaper = {
enable = lib.mkOption { enable = lib.mkOption {
@ -20,12 +27,12 @@
}; };
}; };
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" = xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable {
lib.mkIf config.mods.hyprland.hyprpaper.enable {
text = config.mods.hyprland.hyprpaper.config; text = config.mods.hyprland.hyprpaper.config;
}; };
}); }
);
} }

View file

@ -1,6 +1,14 @@
{ lib, config, pkgs, options, ... }: {
let username = config.conf.username; lib,
in { config,
pkgs,
options,
...
}:
let
username = config.conf.username;
in
{
options.mods = { options.mods = {
hyprland.ironbar = { hyprland.ironbar = {
enable = lib.mkOption { enable = lib.mkOption {
@ -11,8 +19,8 @@ in {
}; };
}; };
}; };
config = lib.mkIf config.mods.hyprland.ironbar.enable config = lib.mkIf config.mods.hyprland.ironbar.enable (
(lib.optionalAttrs (options ? programs.ironbar) { lib.optionalAttrs (options ? programs.ironbar) {
programs.ironbar = { programs.ironbar = {
enable = true; enable = true;
@ -164,14 +172,17 @@ in {
} }
{ {
type = "custom"; type = "custom";
bar = [{ bar = [
{
type = "button"; type = "button";
class = "popup-button"; class = "popup-button";
label = ""; label = "";
on_click = "popup:toggle"; on_click = "popup:toggle";
}]; }
];
class = "popup-button-box"; class = "popup-button-box";
popup = [{ popup = [
{
type = "box"; type = "box";
orientation = "vertical"; orientation = "vertical";
class = "audio-box"; class = "audio-box";
@ -184,15 +195,13 @@ in {
type = "button"; type = "button";
class = "audio-button"; class = "audio-button";
label = ""; label = "";
on_click = on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
"!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
} }
{ {
type = "button"; type = "button";
class = "audio-button"; class = "audio-button";
label = "󰋋"; label = "󰋋";
on_click = on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal";
"!/home/${username}/.config/eww/scripts/audio_control.sh internal";
} }
]; ];
class = "audio-button-box"; class = "audio-button-box";
@ -206,8 +215,7 @@ in {
class = "audio-slider"; class = "audio-slider";
step = 1.0; step = 1.0;
length = 200; length = 200;
value = value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
"pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
} }
{ {
@ -219,23 +227,23 @@ in {
class = "audio-slider"; class = "audio-slider";
step = 1.0; step = 1.0;
length = 200; length = 200;
value = value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
"pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
on_change = }
"!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; ];
} }
]; ];
}];
} }
{ {
type = "custom"; type = "custom";
bar = [{ bar = [
{
type = "button"; type = "button";
class = "popup-button"; class = "popup-button";
label = ""; label = "";
on_click = on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css";
"!oxidash --css /home/${username}/gits/oxidash/style.css"; }
}]; ];
class = "popup-button-box"; class = "popup-button-box";
} }
{ {
@ -249,19 +257,24 @@ in {
position = "top"; position = "top";
height = 10; height = 10;
anchor_to_edges = true; anchor_to_edges = true;
start = [{ start = [
{
type = "workspaces"; type = "workspaces";
all_monitors = true; all_monitors = true;
}]; }
center = [{ ];
center = [
{
type = "focused"; type = "focused";
show_icon = true; show_icon = true;
show_title = true; show_title = true;
icon_size = 20; icon_size = 20;
truncate = "end"; truncate = "end";
}]; }
}; ];
}; };
}; };
}); };
}
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods = { options.mods = {
kde_connect.enable = lib.mkOption { kde_connect.enable = lib.mkOption {
@ -11,21 +18,25 @@
}; };
}; };
config = lib.mkIf config.mods.kde_connect.enable config = lib.mkIf config.mods.kde_connect.enable (
(lib.optionalAttrs (options ? networking.firewall) { lib.optionalAttrs (options ? networking.firewall) {
networking.firewall = { networking.firewall = {
allowedTCPPortRanges = [{ allowedTCPPortRanges = [
{
from = 1714; from = 1714;
to = 1764; to = 1764;
} # KDE Connect }
# KDE Connect
]; ];
allowedUDPPortRanges = [{ allowedUDPPortRanges = [
{
from = 1714; from = 1714;
to = 1764; to = 1764;
} # KDE Connect }
# KDE Connect
]; ];
}; };
} // lib.optionalAttrs (options ? home.packages) { }
home.packages = with pkgs; [ kdeconnect ]; // lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ kdeconnect ]; }
}); );
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.keepassxc = { options.mods.keepassxc = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -10,8 +17,7 @@
default = true; default = true;
example = false; example = false;
type = lib.types.bool; type = lib.types.bool;
description = description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
"Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
}; };
cache_config = lib.mkOption { cache_config = lib.mkOption {
default = '' default = ''
@ -26,8 +32,8 @@
description = "Cache config to be used."; description = "Cache config to be used.";
}; };
}; };
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 = ''
@ -53,9 +59,9 @@
''; '';
}; };
home.file.".cache/keepassxc/keepassxc.ini" = home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config {
lib.mkIf config.mods.keepassxc.use_cache_config {
text = config.mods.keepassxc.cache_config; text = config.mods.keepassxc.cache_config;
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, inputs, ... }: {
lib,
config,
options,
pkgs,
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);
@ -20,12 +27,14 @@ let
"e" = "d"; "e" = "d";
"f" = "e"; "f" = "e";
}; };
base = "#" + lib.strings.concatStrings base =
((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [ "#"
hexTable."${(lib.lists.last + lib.strings.concatStrings (
(lib.strings.stringToCharacters scheme.base00))}" (lib.lists.take 5 (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;
@ -34,9 +43,11 @@ in {
description = "Enables kitty"; description = "Enables kitty";
}; };
}; };
config = lib.mkIf config.mods.kitty.enable config = lib.mkIf config.mods.kitty.enable (
(lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
stylix.targets.kitty = { enable = false; }; stylix.targets.kitty = {
enable = false;
};
programs.kitty = { programs.kitty = {
enable = true; enable = true;
settings = { settings = {
@ -89,6 +100,6 @@ in {
}; };
}; };
});
} }
);
}

View file

@ -1,4 +1,10 @@
{ lib, options, config, ... }: { {
lib,
options,
config,
...
}:
{
options.mods.xkb = { options.mods.xkb = {
layout = lib.mkOption { layout = lib.mkOption {
default = "dashie"; default = "dashie";
@ -13,11 +19,13 @@
description = "Your variant"; description = "Your variant";
}; };
}; };
config = (lib.optionalAttrs (options ? services.xserver) { config = (
lib.optionalAttrs (options ? services.xserver) {
# Configure keymap in X11 # Configure keymap in X11
services.xserver = { services.xserver = {
xkb.layout = "${config.mods.xkb.layout}"; xkb.layout = "${config.mods.xkb.layout}";
xkb.variant = "${config.mods.xkb.variant}"; xkb.variant = "${config.mods.xkb.variant}";
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, options, config, pkgs, ... }: { {
lib,
options,
config,
pkgs,
...
}:
{
options.mods.media_packages = { options.mods.media_packages = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -16,10 +23,12 @@
''; '';
}; };
}; };
config = (lib.optionalAttrs (options ? home.packages) { config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.media_packages.additional_packages; home.packages = config.mods.media_packages.additional_packages;
} // (lib.mkIf config.mods.media_packages.enable }
(lib.optionalAttrs (options ? home.packages) { // (lib.mkIf config.mods.media_packages.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ home.packages = with pkgs; [
# base audio # base audio
pipewire pipewire
@ -49,5 +58,7 @@
]; ];
programs.obs-studio.enable = true; programs.obs-studio.enable = true;
programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ];
}))); }
))
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.ncspot = { options.mods.ncspot = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -7,11 +14,10 @@
description = "Enables ncspot with a config"; description = "Enables ncspot with a config";
}; };
}; };
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 = xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" {
(pkgs.formats.toml { }).generate "ncspot" {
notify = true; notify = true;
shuffle = true; shuffle = true;
cover_max_scale = 2; cover_max_scale = 2;
@ -47,5 +53,6 @@
body = "%title"; body = "%title";
}; };
}; };
}); }
);
} }

View file

@ -1,4 +1,5 @@
{ lib, ... }: { { lib, ... }:
{
options.mods = { options.mods = {
nextcloud = { nextcloud = {
enable = lib.mkOption { enable = lib.mkOption {
@ -21,11 +22,13 @@
}; };
synclist = lib.mkOption { synclist = lib.mkOption {
default = [ ]; default = [ ];
example = [{ example = [
{
name = "sync globi folder"; name = "sync globi folder";
remote = "globi"; remote = "globi";
local = "/home/globi"; local = "/home/globi";
}]; }
];
description = '' description = ''
A list of folders to synchronize. A list of folders to synchronize.
This has to be an attribute list with the name, remote and local field (all strings). This has to be an attribute list with the name, remote and local field (all strings).

View file

@ -1,5 +1,17 @@
{ lib, config, options, inputs, ... }: { {
imports = [ ./oxidash.nix ./oxinoti.nix ./oxishut.nix ./oxipaste.nix ]; lib,
config,
options,
inputs,
...
}:
{
imports = [
./oxidash.nix
./oxinoti.nix
./oxishut.nix
./oxipaste.nix
];
options.mods.oxi = { options.mods.oxi = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -32,8 +44,8 @@
}; };
}; };
}; };
config = lib.mkIf config.mods.oxi.enable config = lib.mkIf config.mods.oxi.enable (
(lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) {
programs = { programs = {
hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true; hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true;
oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true; oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true;
@ -46,12 +58,12 @@
]; ];
plugin_config = { plugin_config = {
Keyboard = { Keyboard = {
path = path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
"/home/${config.conf.username}/.config/reset/keyboard.conf";
}; };
}; };
}; };
}; };
}; };
}); }
);
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods.oxi.oxidash = { options.mods.oxi.oxidash = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxidash"; description = "Enables and configures oxidash";
}; };
}; };
config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) (
(lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
programs.oxidash.enable = true; programs.oxidash.enable = true;
xdg.configFile."oxidash/style.css" = { xdg.configFile."oxidash/style.css" = {
text = '' text = ''
@ -60,5 +66,6 @@
} }
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods.oxi.oxinoti = { options.mods.oxi.oxinoti = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxinoti"; description = "Enables and configures oxinoti";
}; };
}; };
config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) (
(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
@ -100,5 +106,6 @@
dnd_override = 2 dnd_override = 2
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods.oxi.oxipaste = { options.mods.oxi.oxipaste = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxipaste"; description = "Enables and configures oxipaste";
}; };
}; };
config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) (
(lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
programs.oxipaste.enable = true; programs.oxipaste.enable = true;
xdg.configFile."oxipaste/style.css" = { xdg.configFile."oxipaste/style.css" = {
text = '' text = ''
@ -38,5 +44,6 @@
} }
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods.oxi.oxishut = { options.mods.oxi.oxishut = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxishut"; description = "Enables and configures oxishut";
}; };
}; };
config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) (
(lib.optionalAttrs (options ? xdg.configFile) { lib.optionalAttrs (options ? xdg.configFile) {
programs.oxishut.enable = true; programs.oxishut.enable = true;
xdg.configFile."oxishut/style.css" = { xdg.configFile."oxishut/style.css" = {
text = '' text = ''
@ -32,5 +38,6 @@
} }
''; '';
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.piper = { options.mods.piper = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -7,10 +14,8 @@
description = "Enables the piper program and its daemon"; description = "Enables the piper program and its daemon";
}; };
}; };
config = lib.mkIf config.mods.piper.enable config = lib.mkIf config.mods.piper.enable (
(lib.optionalAttrs (options ? services.ratbagd) { lib.optionalAttrs (options ? services.ratbagd) { services.ratbagd.enable = true; }
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

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.printing = { options.mods.printing = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +14,8 @@
description = "Enables the piper program and its daemon"; description = "Enables the piper program and its daemon";
}; };
}; };
config = lib.mkIf config.mods.printing.enable config = lib.mkIf config.mods.printing.enable (
(lib.optionalAttrs (options ? services.printing) { lib.optionalAttrs (options ? services.printing) {
# Enable CUPS to print documents. # Enable CUPS to print documents.
services.printing.enable = true; services.printing.enable = true;
services.printing.browsing = true; services.printing.browsing = true;
@ -19,5 +26,6 @@
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
}; };
}); }
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.scripts = { options.mods.scripts = {
change-brightness = lib.mkOption { change-brightness = lib.mkOption {
default = true; default = true;
@ -15,14 +22,14 @@
scripts = lib.mkOption { scripts = lib.mkOption {
default = [ ]; default = [ ];
example = [ ]; example = [ ];
description = description = "More scripts to be passed. (check existing ones for types and examples)";
"More scripts to be passed. (check existing ones for types and examples)";
}; };
}; };
config = (lib.optionalAttrs (options ? home.packages) { config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = [ home.packages = [
(lib.mkIf config.mods.scripts.change-brightness (lib.mkIf config.mods.scripts.change-brightness (
(pkgs.writeShellScriptBin "change-brightness" '' pkgs.writeShellScriptBin "change-brightness" ''
set_brightness() { set_brightness() {
brightnessctl set "$1" brightnessctl set "$1"
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
@ -32,9 +39,10 @@
if [ "$1" == "brightness" ]; then if [ "$1" == "brightness" ]; then
set_brightness "$2" set_brightness "$2"
fi fi
'')) ''
(lib.mkIf config.mods.scripts.audio-control ))
(pkgs.writeShellScriptBin "audio-control" '' (lib.mkIf config.mods.scripts.audio-control (
pkgs.writeShellScriptBin "audio-control" ''
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')
@ -114,7 +122,9 @@
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

@ -1,4 +1,12 @@
{ lib, pkgs, config, options, root, ... }: { {
lib,
pkgs,
config,
options,
root,
...
}:
{
options.mods.sops = { options.mods.sops = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -19,8 +27,8 @@
description = "secrets for sops"; description = "secrets for sops";
}; };
}; };
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 = {
@ -32,5 +40,6 @@
}; };
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ];
}); }
);
} }

View file

@ -1,4 +1,12 @@
{ lib, config, options, pkgs, inputs, ... }: { {
lib,
config,
options,
pkgs,
inputs,
...
}:
{
options.mods = { options.mods = {
starship = { starship = {
enable = lib.mkOption { enable = lib.mkOption {
@ -30,24 +38,23 @@
}; };
# 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 = let programs.starship =
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 = code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)";
"[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; in
in { {
enable = true; enable = true;
interactiveOnly = true; interactiveOnly = true;
presets = lib.mkIf config.mods.starship.use_default_prompt presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ];
[ "pastel-powerline" ]; settings =
settings = lib.mkIf config.mods.starship.use_default_prompt { lib.mkIf config.mods.starship.use_default_prompt {
# derived from https://starship.rs/presets/pastel-powerline # derived from https://starship.rs/presets/pastel-powerline
format = format = "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)";
"$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)"; 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";
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";
username = { username = {
show_always = false; show_always = false;
style_user = "bg:#5277C3 fg:#${scheme.base05}"; style_user = "bg:#5277C3 fg:#${scheme.base05}";
@ -56,7 +63,9 @@
disabled = false; disabled = false;
}; };
os = { os = {
symbols = { NixOS = " "; }; symbols = {
NixOS = " ";
};
style = "bg:#3465A4 fg:#${scheme.base05}"; style = "bg:#3465A4 fg:#${scheme.base05}";
disabled = false; disabled = false;
}; };
@ -70,8 +79,7 @@
always_show_remote = true; always_show_remote = true;
symbol = ""; symbol = "";
style = "bg:#5256c3 fg:#${scheme.base05}"; style = "bg:#5256c3 fg:#${scheme.base05}";
format = format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
"[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
}; };
git_status = { git_status = {
staged = "+\${count} (fg:#C4A000)"; staged = "+\${count} (fg:#C4A000)";
@ -89,40 +97,81 @@
}; };
git_metrics = { git_metrics = {
disabled = false; disabled = false;
format = format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
"([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))"; };
c = {
format = code_format;
};
elixir = {
format = code_format;
};
elm = {
format = code_format;
};
golang = {
format = code_format;
};
gradle = {
format = code_format;
};
haskell = {
format = code_format;
};
java = {
format = code_format;
};
julia = {
format = code_format;
};
nodejs = {
format = code_format;
};
nim = {
format = code_format;
}; };
c = { format = code_format; };
elixir = { format = code_format; };
elm = { format = code_format; };
golang = { format = code_format; };
gradle = { format = code_format; };
haskell = { format = code_format; };
java = { format = code_format; };
julia = { format = code_format; };
nodejs = { format = code_format; };
nim = { format = code_format; };
nix_shell = { nix_shell = {
symbol = ""; symbol = "";
format = code_format; format = code_format;
}; };
rust = { format = code_format; }; rust = {
scala = { format = code_format; }; format = code_format;
typst = { format = code_format; }; };
python = { format = code_format; }; scala = {
ocaml = { format = code_format; }; format = code_format;
opa = { format = code_format; }; };
perl = { format = code_format; }; typst = {
zig = { format = code_format; }; format = code_format;
dart = { format = code_format; }; };
dotnet = { format = code_format; }; python = {
format = code_format;
};
ocaml = {
format = code_format;
};
opa = {
format = code_format;
};
perl = {
format = code_format;
};
zig = {
format = code_format;
};
dart = {
format = code_format;
};
dotnet = {
format = code_format;
};
time = { time = {
disabled = false; disabled = false;
time_format = "%R"; # Hour:Minute Format time_format = "%R"; # Hour:Minute Format
style = "bg:#3465A4 fg:#${scheme.base05}"; style = "bg:#3465A4 fg:#${scheme.base05}";
format = "[ $time ]($style)"; format = "[ $time ]($style)";
}; };
} // config.mods.starship.custom_prompt; }
}; // config.mods.starship.custom_prompt;
}); };
}
);
} }

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: { {
lib,
config,
options,
pkgs,
...
}:
{
options.mods.stylix = { options.mods.stylix = {
colorscheme = lib.mkOption { colorscheme = lib.mkOption {
default = { default = {
@ -27,7 +34,13 @@
base0F = "F7768E"; base0F = "F7768E";
}; };
example = "catppuccin-mocha"; example = "catppuccin-mocha";
type = with lib.types; oneOf [ str attrs path ]; type =
with lib.types;
oneOf [
str
attrs
path
];
description = '' description = ''
Base16 colorscheme. Base16 colorscheme.
Can be an attribute set with base00 to base0F, Can be an attribute set with base00 to base0F,
@ -35,18 +48,18 @@
or a path to a custom yaml file. or a path to a custom yaml file.
''; '';
}; };
cursor = lib.mkOption {
default = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
}; };
config = (lib.optionalAttrs (options ? stylix) { example = { };
stylix = { type = with lib.types; attrsOf anything;
enable = true; description = "Xcursor config";
image = ../../base/black.jpg;
polarity = "dark";
targets = {
nixvim.enable = false;
fish.enable = false;
}; };
fonts = lib.mkOption {
fonts = { default = {
serif = { serif = {
package = pkgs.cantarell-fonts; package = pkgs.cantarell-fonts;
name = "Cantarell"; name = "Cantarell";
@ -59,7 +72,6 @@
monospace = { monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
# name = "JetBrains Mono Nerd";
name = "JetBrainsMono Nerd Font Mono"; name = "JetBrainsMono Nerd Font Mono";
}; };
@ -68,17 +80,30 @@
name = "Noto Color Emoji"; name = "Noto Color Emoji";
}; };
}; };
example = { };
cursor = { type = with lib.types; attrsOf anything;
package = pkgs.bibata-cursors; description = "font config";
name = "Bibata-Modern-Classic";
size = 24;
}; };
};
base16Scheme = (if builtins.isAttrs config.mods.stylix.colorscheme then config = (
lib.optionalAttrs (options ? stylix) {
stylix = {
enable = true;
image = ../../base/black.jpg;
polarity = "dark";
targets = {
nixvim.enable = false;
fish.enable = false;
};
fonts = config.mods.stylix.fonts;
cursor = config.mods.stylix.cursor;
base16Scheme = (
if builtins.isAttrs config.mods.stylix.colorscheme then
config.mods.stylix.colorscheme 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

@ -1,13 +1,20 @@
{ lib, config, options, pkgs, ... }: {
let callPackage = lib.callPackageWith pkgs; lib,
in { config,
options,
pkgs,
...
}:
let
callPackage = lib.callPackageWith pkgs;
in
{
options.mods.teams = { options.mods.teams = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
example = true; example = true;
type = lib.types.bool; type = lib.types.bool;
description = description = "Enables teams via a chromium pwa (for the poor souls that have to use this for work)";
"Enables teams via a chromium pwa (for the poor souls that have to use this for work)";
}; };
loopback = lib.mkOption { loopback = lib.mkOption {
default = true; default = true;
@ -16,17 +23,18 @@ in {
description = "Enables loopback for screensharing -> teams sucks :)"; description = "Enables loopback for screensharing -> teams sucks :)";
}; };
}; };
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 { }) ];
} // (lib.optionalAttrs (options ? boot.kernelModules) { }
// (lib.optionalAttrs (options ? boot.kernelModules) {
boot = { boot = {
extraModulePackages = extraModulePackages = [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ];
[ pkgs.linuxKernel.packages.linux_xanmod_latest.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

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods = { options.mods = {
virtualbox.enable = lib.mkOption { virtualbox.enable = lib.mkOption {
@ -12,7 +18,6 @@
}; };
config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) { config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
virtualisation.virtualbox.host.enable = virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true;
lib.mkIf config.mods.virtualbox.enable true;
}; };
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods = { options.mods = {
xone.enable = lib.mkOption { xone.enable = lib.mkOption {
@ -11,6 +17,5 @@
}; };
}; };
config = config = lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
} }

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: { {
lib,
config,
options,
...
}:
{
options.mods.yazi = { options.mods.yazi = {
enable = lib.mkOption { enable = lib.mkOption {
default = true; default = true;
@ -7,8 +13,7 @@
description = "Enables yazi"; description = "Enables yazi";
}; };
}; };
config = lib.mkIf config.mods.yazi.enable config = lib.mkIf config.mods.yazi.enable (
(lib.optionalAttrs (options ? home.packages) { lib.optionalAttrs (options ? home.packages) { programs.yazi = import ./yazi.nix; }
programs.yazi = import ./yazi.nix; );
});
} }

View file

@ -2,7 +2,9 @@
# don't ask.... # don't ask....
enable = true; enable = true;
settings = { settings = {
log = { enabled = false; }; log = {
enabled = false;
};
opener = { opener = {
folder = [ folder = [
@ -16,14 +18,18 @@
orphan = true; orphan = true;
} }
]; ];
archive = [{ archive = [
{
run = ''unar "$1"''; run = ''unar "$1"'';
display_name = "Extract here"; display_name = "Extract here";
}]; }
text = [{ ];
text = [
{
run = ''$EDITOR "$@"''; run = ''$EDITOR "$@"'';
orphan = true; orphan = true;
}]; }
];
image = [ image = [
{ {
run = ''imv "$@"''; run = ''imv "$@"'';
@ -36,11 +42,13 @@
display_name = "Show EXIF"; display_name = "Show EXIF";
} }
]; ];
pdf = [{ pdf = [
{
run = ''zathura "$@"''; run = ''zathura "$@"'';
orphan = true; orphan = true;
display_name = "Open"; display_name = "Open";
}]; }
];
video = [ video = [
{ {
run = ''mpv "$@"''; run = ''mpv "$@"'';
@ -216,7 +224,10 @@
} }
{ {
on = [ "g" "g" ]; on = [
"g"
"g"
];
run = "arrow -99999999"; run = "arrow -99999999";
desc = "Move cursor to the top"; desc = "Move cursor to the top";
} }
@ -335,12 +346,20 @@
desc = "Toggle the visibility of hidden files"; desc = "Toggle the visibility of hidden files";
} }
{ {
on = [ "<Space>" "f" "g>" ]; on = [
"<Space>"
"f"
"g>"
];
run = "search fd"; run = "search fd";
desc = "Search files by name using fd"; desc = "Search files by name using fd";
} }
{ {
on = [ "<Space>" "f" "G>" ]; on = [
"<Space>"
"f"
"G>"
];
run = "search rg"; run = "search rg";
desc = "Search files by content using ripgrep"; desc = "Search files by content using ripgrep";
} }
@ -362,22 +381,34 @@
# Copy # Copy
{ {
on = [ "c" "c" ]; on = [
"c"
"c"
];
run = "copy path"; run = "copy path";
desc = "Copy the absolute path"; desc = "Copy the absolute path";
} }
{ {
on = [ "c" "d" ]; on = [
"c"
"d"
];
run = "copy dirname"; run = "copy dirname";
desc = "Copy the path of the parent directory"; desc = "Copy the path of the parent directory";
} }
{ {
on = [ "c" "f" ]; on = [
"c"
"f"
];
run = "copy filename"; run = "copy filename";
desc = "Copy the name of the file"; desc = "Copy the name of the file";
} }
{ {
on = [ "c" "n" ]; on = [
"c"
"n"
];
run = "copy name_without_ext"; run = "copy name_without_ext";
desc = "Copy the name of the file without the extension"; desc = "Copy the name of the file without the extension";
} }
@ -402,52 +433,82 @@
# Sorting # Sorting
{ {
on = [ "," "a" ]; on = [
","
"a"
];
run = "sort alphabetical --dir_first"; run = "sort alphabetical --dir_first";
desc = "Sort alphabetically"; desc = "Sort alphabetically";
} }
{ {
on = [ "," "A" ]; on = [
","
"A"
];
run = "sort alphabetical --reverse --dir_first"; run = "sort alphabetical --reverse --dir_first";
desc = "Sort alphabetically (reverse)"; desc = "Sort alphabetically (reverse)";
} }
{ {
on = [ "," "c" ]; on = [
","
"c"
];
run = "sort created --dir_first"; run = "sort created --dir_first";
desc = "Sort by creation time"; desc = "Sort by creation time";
} }
{ {
on = [ "," "C" ]; on = [
","
"C"
];
run = "sort created --reverse --dir_first"; run = "sort created --reverse --dir_first";
desc = "Sort by creation time (reverse)"; desc = "Sort by creation time (reverse)";
} }
{ {
on = [ "," "m" ]; on = [
","
"m"
];
run = "sort modified --dir_first"; run = "sort modified --dir_first";
desc = "Sort by modified time"; desc = "Sort by modified time";
} }
{ {
on = [ "," "M" ]; on = [
","
"M"
];
run = "sort modified --reverse --dir_first"; run = "sort modified --reverse --dir_first";
desc = "Sort by modified time (reverse)"; desc = "Sort by modified time (reverse)";
} }
{ {
on = [ "," "n" ]; on = [
","
"n"
];
run = "sort natural --dir_first"; run = "sort natural --dir_first";
desc = "Sort naturally"; desc = "Sort naturally";
} }
{ {
on = [ "," "N" ]; on = [
","
"N"
];
run = "sort natural --reverse --dir_first"; run = "sort natural --reverse --dir_first";
desc = "Sort naturally (reverse)"; desc = "Sort naturally (reverse)";
} }
{ {
on = [ "," "s" ]; on = [
","
"s"
];
run = "sort size --dir_first"; run = "sort size --dir_first";
desc = "Sort by size"; desc = "Sort by size";
} }
{ {
on = [ "," "S" ]; on = [
","
"S"
];
run = "sort size --reverse --dir_first"; run = "sort size --reverse --dir_first";
desc = "Sort by size (reverse)"; desc = "Sort by size (reverse)";
} }
@ -536,27 +597,42 @@
# Goto # Goto
{ {
on = [ "g" "h" ]; on = [
"g"
"h"
];
run = "cd ~"; run = "cd ~";
desc = "Go to the home directory"; desc = "Go to the home directory";
} }
{ {
on = [ "g" "c" ]; on = [
"g"
"c"
];
run = "cd ~/.config"; run = "cd ~/.config";
desc = "Go to the config directory"; desc = "Go to the config directory";
} }
{ {
on = [ "g" "d" ]; on = [
"g"
"d"
];
run = "cd ~/Downloads"; run = "cd ~/Downloads";
desc = "Go to the downloads directory"; desc = "Go to the downloads directory";
} }
{ {
on = [ "g" "t" ]; on = [
"g"
"t"
];
run = "cd /tmp"; run = "cd /tmp";
desc = "Go to the temporary directory"; desc = "Go to the temporary directory";
} }
{ {
on = [ "g" "<Space>" ]; on = [
"g"
"<Space>"
];
run = "cd --interactive"; run = "cd --interactive";
desc = "Go to a directory interactively"; desc = "Go to a directory interactively";
} }
@ -718,7 +794,11 @@
} }
{ {
on = [ "V" ]; on = [ "V" ];
run = [ "move -999" "visual" "move 999" ]; run = [
"move -999"
"visual"
"move 999"
];
desc = "Enter visual mode and select all"; desc = "Enter visual mode and select all";
} }
@ -746,12 +826,18 @@
} }
{ {
on = [ "I" ]; on = [ "I" ];
run = [ "move -999" "insert" ]; run = [
"move -999"
"insert"
];
desc = "Move to the BOL and enter insert mode"; desc = "Move to the BOL and enter insert mode";
} }
{ {
on = [ "A" ]; on = [ "A" ];
run = [ "move 999" "insert --append" ]; run = [
"move 999"
"insert --append"
];
desc = "Move to the EOL and enter append mode"; desc = "Move to the EOL and enter append mode";
} }
@ -790,7 +876,10 @@
} }
{ {
on = [ "D" ]; on = [ "D" ];
run = [ "delete --cut" "move 999" ]; run = [
"delete --cut"
"move 999"
];
desc = "Cut until the EOL"; desc = "Cut until the EOL";
} }
{ {
@ -800,12 +889,18 @@
} }
{ {
on = [ "C" ]; on = [ "C" ];
run = [ "delete --cut --insert" "move 999" ]; run = [
"delete --cut --insert"
"move 999"
];
desc = "Cut until the EOL and enter insert mode"; desc = "Cut until the EOL and enter insert mode";
} }
{ {
on = [ "x" ]; on = [ "x" ];
run = [ "delete --cut" "move 1 --in-operating" ]; run = [
"delete --cut"
"move 1 --in-operating"
];
desc = "Cut the current character"; desc = "Cut the current character";
} }
@ -1136,4 +1231,3 @@
# }; # };
# }; # };
} }

View file

@ -1,4 +1,11 @@
{ stdenv, lib, copyDesktopItems, makeDesktopItem, chromium, ... }: {
stdenv,
lib,
copyDesktopItems,
makeDesktopItem,
chromium,
...
}:
stdenv.mkDerivation (final: { stdenv.mkDerivation (final: {
pname = "teams-pwa"; pname = "teams-pwa";
name = final.pname; name = final.pname;