style: format with nixfmt-rfc

This commit is contained in:
winston 2024-05-07 18:20:52 +02:00
parent 3904ea1ce5
commit 2bfedcd162
Signed by: winston
GPG key ID: 3786770EDBC2B481
51 changed files with 1248 additions and 1124 deletions

View file

@ -1,5 +1,10 @@
# This file was generated by nvfetcher, please do not modify it manually. # This file was generated by nvfetcher, please do not modify it manually.
{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }: {
fetchgit,
fetchurl,
fetchFromGitHub,
dockerTools,
}:
{ {
catppuccin-bat = { catppuccin-bat = {
pname = "catppuccin-bat"; pname = "catppuccin-bat";

135
flake.nix
View file

@ -1,23 +1,20 @@
{ {
description = "nekowinston's hm flake"; description = "nekowinston's hm flake";
outputs = { outputs =
flake-parts, { flake-parts, self, ... }@inputs:
self, let
... inherit (import ./machines/lib.nix { inherit inputs overlays; }) mkSystems;
} @ inputs: let overlays = import ./pkgs/overlays.nix { inherit inputs; };
inherit (import ./machines/lib.nix {inherit inputs overlays;}) mkSystems; in
overlays = import ./pkgs/overlays.nix {inherit inputs;}; flake-parts.lib.mkFlake { inherit self inputs; } {
in
flake-parts.lib.mkFlake {inherit self inputs;}
{
flake = mkSystems [ flake = mkSystems [
{ {
host = "sashimi"; host = "sashimi";
system = "aarch64-darwin"; system = "aarch64-darwin";
username = "winston"; username = "winston";
isGraphical = true; isGraphical = true;
extraModules = [inputs.nekowinston-nur.darwinModules.default]; extraModules = [ inputs.nekowinston-nur.darwinModules.default ];
} }
{ {
host = "futomaki"; host = "futomaki";
@ -30,61 +27,79 @@
system = "x86_64-linux"; system = "x86_64-linux";
username = "winston"; username = "winston";
isGraphical = false; isGraphical = false;
extraModules = [inputs.wsl.nixosModules.default]; extraModules = [ inputs.wsl.nixosModules.default ];
} }
]; ];
imports = [inputs.pre-commit-hooks.flakeModule]; imports = [ inputs.pre-commit-hooks.flakeModule ];
perSystem = { perSystem =
config, {
self', config,
inputs', self',
pkgs, inputs',
system, pkgs,
... lib,
}: { system,
_module.args.pkgs = import inputs.nixpkgs { ...
inherit overlays system; }:
config.allowUnfree = true; {
}; _module.args.pkgs = import inputs.nixpkgs {
inherit overlays system;
pre-commit = { config.allowUnfree = true;
check.enable = true;
settings.excludes = ["_sources/"];
settings.hooks = {
alejandra.enable = true;
commitizen.enable = true;
editorconfig-checker.enable = true;
luacheck.enable = true;
nil.enable = true;
shellcheck.enable = true;
stylua.enable = true;
}; };
};
devShells.default = pkgs.mkShell { pre-commit = {
inherit (config.pre-commit.devShell) shellHook; check.enable = true;
RULES = "./home/secrets/secrets.nix"; settings.excludes = [ "_sources/" ];
buildInputs = with pkgs; settings.hooks = {
[alejandra just nil nix-output-monitor nvd inputs'.agenix.packages.agenix] commitizen.enable = true;
++ lib.optionals stdenv.isDarwin [inputs'.darwin.packages.darwin-rebuild]; editorconfig-checker.enable = true;
}; luacheck.enable = true;
nil.enable = true;
legacyPackages.homeConfigurations = let nixfmt.enable = true;
homeLib = import ./home/lib.nix { nixfmt.package = pkgs.nixfmt-rfc-style;
inherit inputs pkgs username; shellcheck.enable = true;
isNixOS = false; stylua.enable = true;
};
}; };
username = "winston";
in {
${username} = inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
inherit (homeLib) extraSpecialArgs modules;
};
};
formatter = pkgs.alejandra; devShells.default = pkgs.mkShell {
}; inherit (config.pre-commit.devShell) shellHook;
systems = ["aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux"]; RULES = "./home/secrets/secrets.nix";
buildInputs =
(with pkgs; [
just
nix-output-monitor
nixd
nvd
self'.formatter
])
++ [ inputs'.agenix.packages.agenix ]
++ lib.optionals pkgs.stdenv.isDarwin [ inputs'.darwin.packages.darwin-rebuild ];
};
legacyPackages.homeConfigurations =
let
homeLib = import ./home/lib.nix {
inherit inputs pkgs username;
isNixOS = false;
};
username = "winston";
in
{
${username} = inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
inherit (homeLib) extraSpecialArgs modules;
};
};
formatter = pkgs.nixfmt-rfc-style;
};
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
}; };
nixConfig = { nixConfig = {

View file

@ -3,9 +3,11 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv) isLinux; inherit (pkgs.stdenv) isLinux;
in { in
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
programs.chromium = { programs.chromium = {
enable = isLinux; enable = isLinux;
@ -155,9 +157,7 @@ in {
}; };
}; };
home.packages = lib.mkIf isLinux [ home.packages = lib.mkIf isLinux [ pkgs.mullvad-browser ];
pkgs.mullvad-browser
];
xdg.mimeApps.defaultApplications = { xdg.mimeApps.defaultApplications = {
"text/html" = "chromium.desktop"; "text/html" = "chromium.desktop";

View file

@ -3,16 +3,19 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv) isDarwin isLinux; inherit (pkgs.stdenv) isDarwin isLinux;
vividBuilder = flavor: vividBuilder =
pkgs.runCommand "vivid-${flavor}" {nativeBuildInputs = [pkgs.vivid];} '' flavor:
pkgs.runCommand "vivid-${flavor}" { nativeBuildInputs = [ pkgs.vivid ]; } ''
vivid generate ${pkgs.vivid.src}/themes/catppuccin-${flavor}.yml > $out vivid generate ${pkgs.vivid.src}/themes/catppuccin-${flavor}.yml > $out
''; '';
vividLatte = vividBuilder "latte"; vividLatte = vividBuilder "latte";
vividMocha = vividBuilder "mocha"; vividMocha = vividBuilder "mocha";
in { in
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
home.packages = [ home.packages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
@ -21,22 +24,25 @@ in {
pkgs.dbus pkgs.dbus
pkgs.gnugrep pkgs.gnugrep
]; ];
text = let text =
queryCommand = let
if isLinux queryCommand =
then "dbus-send --session --print-reply=literal --reply-timeout=5 --dest=org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.Settings.Read string:'org.freedesktop.appearance' string:'color-scheme' | grep -q 'uint32 1'" if isLinux then
else if isDarwin "dbus-send --session --print-reply=literal --reply-timeout=5 --dest=org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.Settings.Read string:'org.freedesktop.appearance' string:'color-scheme' | grep -q 'uint32 1'"
then "defaults read -g AppleInterfaceStyle &>/dev/null" else if isDarwin then
else throw "Unsupported platform"; "defaults read -g AppleInterfaceStyle &>/dev/null"
in '' else
[[ -z "''${1-}" ]] && [[ -z "''${2-}" ]] && echo "Usage: $0 <dark> <light>" && exit 1 throw "Unsupported platform";
in
''
[[ -z "''${1-}" ]] && [[ -z "''${2-}" ]] && echo "Usage: $0 <dark> <light>" && exit 1
if ${queryCommand}; then if ${queryCommand}; then
echo "$1" echo "$1"
else else
echo "$2" echo "$2"
fi fi
''; '';
}) })
]; ];

View file

@ -3,38 +3,42 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv) isDarwin isLinux; inherit (pkgs.stdenv) isDarwin isLinux;
in { in
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
home.packages = home.packages =
(lib.optionals isDarwin [(pkgs.discord.override {withOpenASAR = true;})]) (lib.optionals isDarwin [ (pkgs.discord.override { withOpenASAR = true; }) ])
++ (lib.optionals isLinux [(pkgs.vesktop.override {withSystemVencord = false;})]); ++ (lib.optionals isLinux [ (pkgs.vesktop.override { withSystemVencord = false; }) ]);
home.activation.discordSettings = let home.activation.discordSettings =
json = pkgs.writeTextFile { let
name = "discord-settings.json"; json = pkgs.writeTextFile {
text = lib.generators.toJSON {} { name = "discord-settings.json";
DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING = true; text = lib.generators.toJSON { } {
MIN_WIDTH = 0; DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING = true;
MIN_HEIGHT = 0; MIN_WIDTH = 0;
openasar = { MIN_HEIGHT = 0;
css = builtins.readFile ./discord/custom.css; openasar = {
setup = true; css = builtins.readFile ./discord/custom.css;
setup = true;
};
trayBalloonShown = false;
SKIP_HOST_UPDATE = true;
}; };
trayBalloonShown = false;
SKIP_HOST_UPDATE = true;
}; };
}; path =
path = if isLinux then
if isLinux "${config.xdg.configHome}/discord/settings.json"
then "${config.xdg.configHome}/discord/settings.json" else if isDarwin then
else if isDarwin "${config.home.homeDirectory}/Library/Application Support/discord/settings.json"
then "${config.home.homeDirectory}/Library/Application Support/discord/settings.json" else
else throw "unsupported platform"; throw "unsupported platform";
in in
# gets written as a file after the writeBoundary to keep it mutable # gets written as a file after the writeBoundary to keep it mutable
lib.hm.dag.entryAfter ["writeBoundary"] '' lib.hm.dag.entryAfter [ "writeBoundary" ] ''
mkdir -p "$(dirname "${path}")" mkdir -p "$(dirname "${path}")"
cp -f "${json}" "${path}" cp -f "${json}" "${path}"
''; '';
@ -43,7 +47,7 @@ in {
launchd.agents.arrpc = { launchd.agents.arrpc = {
enable = isDarwin; enable = isDarwin;
config = { config = {
ProgramArguments = ["${pkgs.arrpc}/bin/arrpc"]; ProgramArguments = [ "${pkgs.arrpc}/bin/arrpc" ];
KeepAlive = true; KeepAlive = true;
RunAtLoad = true; RunAtLoad = true;
}; };

View file

@ -3,23 +3,26 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
home.activation = { home.activation = {
installCustomFonts = let installCustomFonts =
fontDirectory = let
if pkgs.stdenv.isDarwin fontDirectory =
then "${config.home.homeDirectory}/Library/Fonts" if pkgs.stdenv.isDarwin then
else "${config.xdg.dataHome}/fonts"; "${config.home.homeDirectory}/Library/Fonts"
fontPath = ../secrets/fonts; else
in "${config.xdg.dataHome}/fonts";
lib.hm.dag.entryAfter ["writeBoundary"] '' fontPath = ../secrets/fonts;
in
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
mkdir -p "${fontDirectory}" mkdir -p "${fontDirectory}"
install -Dm644 ${fontPath}/* "${fontDirectory}" install -Dm644 ${fontPath}/* "${fontDirectory}"
''; '';
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
(nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) (nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
cascadia-code cascadia-code
victor-mono victor-mono
ibm-plex ibm-plex

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
programs.foot = { programs.foot = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
settings = { settings = {

View file

@ -1,8 +1,5 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
programs.git.includes = [ programs.git.includes = [
{ {
condition = "gitdir:~/Code/work/"; condition = "gitdir:~/Code/work/";
@ -15,7 +12,10 @@
]; ];
# use fsmonitor # use fsmonitor
home.packages = [pkgs.rs-git-fsmonitor pkgs.watchman]; home.packages = [
pkgs.rs-git-fsmonitor
pkgs.watchman
];
programs.git = { programs.git = {
enable = true; enable = true;

View file

@ -4,64 +4,77 @@
osConfig, osConfig,
pkgs, pkgs,
... ...
}: let }:
let
primary-color = "#161321"; primary-color = "#161321";
secondary-color = "#161321"; secondary-color = "#161321";
wallpaper-uri = "file://${../wallpapers/dhm_1610.png}"; wallpaper-uri = "file://${../wallpapers/dhm_1610.png}";
in { in
config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "gnome")) { {
home.packages = with pkgs.gnomeExtensions; [ config =
appindicator lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "gnome"))
blur-my-shell {
mullvad-indicator home.packages = with pkgs.gnomeExtensions; [
native-window-placement appindicator
noannoyance-fork blur-my-shell
pop-shell mullvad-indicator
user-themes native-window-placement
pkgs.pop-launcher noannoyance-fork
]; pop-shell
user-themes
dconf.settings = with lib.hm.gvariant; { pkgs.pop-launcher
# input
"org/gnome/desktop/wm/preferences" = {
resize-with-right-button = true;
};
"org/gnome/desktop/input-sources" = {
sources = [(mkTuple ["xkb" "us"])];
xkb-options = ["caps:ctrl_modifier"];
};
# rice
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"blur-my-shell@aunetx"
"drive-menu@gnome-shell-extensions.gcampax.github.com"
"mullvadindicator@pobega.github.com"
"noannoyance-fork@vrba.dev"
"user-theme@gnome-shell-extensions.gcampax.github.com"
]; ];
favorite-apps = ["org.gnome.Nautilus.desktop" "chromium-browser.desktop" "org.wezfurlong.wezterm.desktop"];
};
"org/gnome/shell/extensions/user-theme" = {
name = "WhiteSur-Light";
};
# wallpaper dconf.settings = with lib.hm.gvariant; {
"org/gnome/desktop/background" = { # input
color-shading-type = "solid"; "org/gnome/desktop/wm/preferences" = {
picture-options = "zoom"; resize-with-right-button = true;
picture-uri = wallpaper-uri; };
picture-uri-dark = wallpaper-uri; "org/gnome/desktop/input-sources" = {
inherit primary-color secondary-color; sources = [
(mkTuple [
"xkb"
"us"
])
];
xkb-options = [ "caps:ctrl_modifier" ];
};
# rice
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"blur-my-shell@aunetx"
"drive-menu@gnome-shell-extensions.gcampax.github.com"
"mullvadindicator@pobega.github.com"
"noannoyance-fork@vrba.dev"
"user-theme@gnome-shell-extensions.gcampax.github.com"
];
favorite-apps = [
"org.gnome.Nautilus.desktop"
"chromium-browser.desktop"
"org.wezfurlong.wezterm.desktop"
];
};
"org/gnome/shell/extensions/user-theme" = {
name = "WhiteSur-Light";
};
# wallpaper
"org/gnome/desktop/background" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = wallpaper-uri;
picture-uri-dark = wallpaper-uri;
inherit primary-color secondary-color;
};
"org/gnome/desktop/screensaver" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = wallpaper-uri;
inherit primary-color secondary-color;
};
};
}; };
"org/gnome/desktop/screensaver" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = wallpaper-uri;
inherit primary-color secondary-color;
};
};
};
} }

View file

@ -1,8 +1,5 @@
{ { config, pkgs, ... }:
config, let
pkgs,
...
}: let
inherit (pkgs.stdenv.hostPlatform) isLinux isDarwin; inherit (pkgs.stdenv.hostPlatform) isLinux isDarwin;
key = "0x0B89BC45007EE9CC"; key = "0x0B89BC45007EE9CC";
mailvelopeConfig = builtins.toJSON { mailvelopeConfig = builtins.toJSON {
@ -10,16 +7,21 @@
description = "JavaScript binding for GnuPG"; description = "JavaScript binding for GnuPG";
path = pkgs.gpgme.dev + /bin/gpgme-json; path = pkgs.gpgme.dev + /bin/gpgme-json;
type = "stdio"; type = "stdio";
allowed_extensions = ["jid1-AQqSMBYb0a8ADg@jetpack"]; allowed_extensions = [ "jid1-AQqSMBYb0a8ADg@jetpack" ];
}; };
in { in
home.packages = with pkgs; ([ {
git-credential-gopass home.packages =
gopass with pkgs;
gopass-jsonapi (
yubikey-personalization [
] git-credential-gopass
++ lib.optionals isDarwin [pinentry_mac]); gopass
gopass-jsonapi
yubikey-personalization
]
++ lib.optionals isDarwin [ pinentry_mac ]
);
# two amazing examples of glorious XDG compliance # two amazing examples of glorious XDG compliance
home.file = { home.file = {
@ -101,9 +103,6 @@ in {
enable = isLinux; enable = isLinux;
enableExtraSocket = true; enableExtraSocket = true;
enableSshSupport = true; enableSshSupport = true;
pinentryPackage = pinentryPackage = if config.isGraphical then pkgs.pinentry-gnome3 else pkgs.pinentry-curses;
if config.isGraphical
then pkgs.pinentry-gnome3
else pkgs.pinentry-curses;
}; };
} }

View file

@ -3,9 +3,11 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}"; themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}";
in { in
{
config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux) { config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux) {
home.pointerCursor = { home.pointerCursor = {
name = "macOS-Monterey"; name = "macOS-Monterey";

View file

@ -4,142 +4,145 @@
pkgs, pkgs,
osConfig, osConfig,
... ...
}: { }:
config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "sway")) { {
home = { config =
packages = with pkgs; [ lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "sway"))
blueberry {
grimblast home = {
hyprpicker packages = with pkgs; [
kooha blueberry
libnotify grimblast
pavucontrol hyprpicker
swaybg kooha
swayosd libnotify
wl-clipboard pavucontrol
]; swaybg
}; swayosd
wl-clipboard
services = { ];
clipman.enable = true;
gnome-keyring = {
enable = true;
components = ["secrets"];
};
wlsunset = {
enable = true;
latitude = toString config.location.latitude;
longitude = toString config.location.longitude;
};
udiskie.enable = true;
};
wayland.windowManager.hyprland = let
mod = "SUPER";
modFocus = "${mod}_CTRL";
modMove = "${mod}_SHIFT";
hyper = "SUPER_CTRL_SHIFT_ALT";
swayosd = pkgs.swayosd + "/bin/swayosd-client";
playerctl = "${pkgs.playerctl}/bin/playerctl";
in {
enable = true;
settings = {
monitor = ",preferred,auto,2";
input.follow_mouse = 1;
env = [
"MOZ_ENABLE_WAYLAND, 1"
"NIXOS_OZONE_WL, 1"
"QT_QPA_PLATFORM, wayland"
"QT_QPA_PLATFORMTHEME, qt5ct"
"SDL_VIDEODRIVER, wayland"
"GDK_SCALE, 2"
"XCURSOR_SIZE, 24"
"XDG_CURRENT_DESKTOP, hyprland"
"XDG_SESSION_DESKTOP, hyprland"
"XDG_SESSION_TYPE, wayland"
"_JAVA_AWT_WM_NONREPARENTING, 1"
];
xwayland.force_zero_scaling = true;
general = {
gaps_in = 2;
gaps_out = 5;
border_size = 2;
"col.active_border" = "0xfff5c2e7";
"col.inactive_border" = "0x80cba6f7";
}; };
misc = {
disable_hyprland_logo = true; services = {
disable_splash_rendering = true; clipman.enable = true;
gnome-keyring = {
enable = true;
components = [ "secrets" ];
};
wlsunset = {
enable = true;
latitude = toString config.location.latitude;
longitude = toString config.location.longitude;
};
udiskie.enable = true;
}; };
decoration.rounding = 5;
dwindle.preserve_split = true;
windowrulev2 = ["suppressevent maximize, class:.*"];
bind = [
"${modMove}, return, exec, foot"
"${modMove}, q, killactive,"
"${modMove}, m, exit,"
"${modMove}, d, togglefloating,"
"${mod}, space, exec, rofi -show drun"
"${modMove}, space, exec, 1password --quick-access"
"${hyper}, p, exec, grimblast --notify --freeze copy area"
"${modMove}, p, exec, hyprpicker -a"
"${modFocus}, h, movefocus, l" wayland.windowManager.hyprland =
"${modFocus}, j, movefocus, d" let
"${modFocus}, k, movefocus, u" mod = "SUPER";
"${modFocus}, l, movefocus, r" modFocus = "${mod}_CTRL";
"${modMove}, h, movewindow, l" modMove = "${mod}_SHIFT";
"${modMove}, j, movewindow, u" hyper = "SUPER_CTRL_SHIFT_ALT";
"${modMove}, k, movewindow, d" swayosd = pkgs.swayosd + "/bin/swayosd-client";
"${modMove}, l, movewindow, r" playerctl = "${pkgs.playerctl}/bin/playerctl";
in
{
enable = true;
settings = {
monitor = ",preferred,auto,2";
input.follow_mouse = 1;
env = [
"MOZ_ENABLE_WAYLAND, 1"
"NIXOS_OZONE_WL, 1"
"QT_QPA_PLATFORM, wayland"
"QT_QPA_PLATFORMTHEME, qt5ct"
"SDL_VIDEODRIVER, wayland"
"GDK_SCALE, 2"
"XCURSOR_SIZE, 24"
"XDG_CURRENT_DESKTOP, hyprland"
"XDG_SESSION_DESKTOP, hyprland"
"XDG_SESSION_TYPE, wayland"
"_JAVA_AWT_WM_NONREPARENTING, 1"
];
xwayland.force_zero_scaling = true;
general = {
gaps_in = 2;
gaps_out = 5;
border_size = 2;
"col.active_border" = "0xfff5c2e7";
"col.inactive_border" = "0x80cba6f7";
};
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
};
decoration.rounding = 5;
dwindle.preserve_split = true;
windowrulev2 = [ "suppressevent maximize, class:.*" ];
bind = [
"${modMove}, return, exec, foot"
"${modMove}, q, killactive,"
"${modMove}, m, exit,"
"${modMove}, d, togglefloating,"
"${mod}, space, exec, rofi -show drun"
"${modMove}, space, exec, 1password --quick-access"
"${hyper}, p, exec, grimblast --notify --freeze copy area"
"${modMove}, p, exec, hyprpicker -a"
"${modFocus}, 1, workspace, 1" "${modFocus}, h, movefocus, l"
"${modFocus}, 2, workspace, 2" "${modFocus}, j, movefocus, d"
"${modFocus}, 3, workspace, 3" "${modFocus}, k, movefocus, u"
"${modFocus}, 4, workspace, 4" "${modFocus}, l, movefocus, r"
"${modFocus}, 5, workspace, 5" "${modMove}, h, movewindow, l"
"${modFocus}, 6, workspace, 6" "${modMove}, j, movewindow, u"
"${modFocus}, 7, workspace, 7" "${modMove}, k, movewindow, d"
"${modFocus}, 8, workspace, 8" "${modMove}, l, movewindow, r"
"${modFocus}, 9, workspace, 9"
"${modFocus}, 0, workspace, 10"
"${modMove}, 1, movetoworkspace, 1" "${modFocus}, 1, workspace, 1"
"${modMove}, 2, movetoworkspace, 2" "${modFocus}, 2, workspace, 2"
"${modMove}, 3, movetoworkspace, 3" "${modFocus}, 3, workspace, 3"
"${modMove}, 4, movetoworkspace, 4" "${modFocus}, 4, workspace, 4"
"${modMove}, 5, movetoworkspace, 5" "${modFocus}, 5, workspace, 5"
"${modMove}, 6, movetoworkspace, 6" "${modFocus}, 6, workspace, 6"
"${modMove}, 7, movetoworkspace, 7" "${modFocus}, 7, workspace, 7"
"${modMove}, 8, movetoworkspace, 8" "${modFocus}, 8, workspace, 8"
"${modMove}, 9, movetoworkspace, 9" "${modFocus}, 9, workspace, 9"
"${modMove}, 0, movetoworkspace, 10" "${modFocus}, 0, workspace, 10"
"${mod}, tab, togglespecialworkspace, magic"
"${modMove}, tab, movetoworkspace, special:magic"
", XF86AudioMute, exec, ${swayosd} --output-volume mute-toggle" "${modMove}, 1, movetoworkspace, 1"
", XF86AudioNext, exec, ${playerctl} next" "${modMove}, 2, movetoworkspace, 2"
", XF86AudioPrev, exec, ${playerctl} previous" "${modMove}, 3, movetoworkspace, 3"
", XF86AudioPause, exec, ${playerctl} play-pause" "${modMove}, 4, movetoworkspace, 4"
]; "${modMove}, 5, movetoworkspace, 5"
binde = [ "${modMove}, 6, movetoworkspace, 6"
", XF86AudioRaiseVolume, exec, ${swayosd} --output-volume 5" "${modMove}, 7, movetoworkspace, 7"
", XF86AudioLowerVolume, exec, ${swayosd} --output-volume -5" "${modMove}, 8, movetoworkspace, 8"
]; "${modMove}, 9, movetoworkspace, 9"
bindm = [ "${modMove}, 0, movetoworkspace, 10"
"SUPER, mouse:272, movewindow" "${mod}, tab, togglespecialworkspace, magic"
"SUPER, mouse:273, resizewindow" "${modMove}, tab, movetoworkspace, special:magic"
];
exec = [ ", XF86AudioMute, exec, ${swayosd} --output-volume mute-toggle"
"${pkgs.swayosd}/bin/swayosd-server" ", XF86AudioNext, exec, ${playerctl} next"
"${pkgs.swaybg}/bin/swaybg -o '*' -m fill -i ${../wallpapers/dhm_1610.png}" ", XF86AudioPrev, exec, ${playerctl} previous"
]; ", XF86AudioPause, exec, ${playerctl} play-pause"
exec-once = [ ];
"${config.programs.waybar.package}/bin/waybar -b hyprland" binde = [
]; ", XF86AudioRaiseVolume, exec, ${swayosd} --output-volume 5"
plugin.hy3.autotile.enable = true; ", XF86AudioLowerVolume, exec, ${swayosd} --output-volume -5"
];
bindm = [
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
exec = [
"${pkgs.swayosd}/bin/swayosd-server"
"${pkgs.swaybg}/bin/swaybg -o '*' -m fill -i ${../wallpapers/dhm_1610.png}"
];
exec-once = [ "${config.programs.waybar.package}/bin/waybar -b hyprland" ];
plugin.hy3.autotile.enable = true;
};
plugins = [ pkgs.hyprlandPlugins.hy3 ];
};
}; };
plugins = [pkgs.hyprlandPlugins.hy3];
};
};
} }

View file

@ -1,12 +1,7 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
(wrapHelm kubernetes-helm { (wrapHelm kubernetes-helm { plugins = [ kubernetes-helmPlugins.helm-diff ]; })
plugins = [kubernetes-helmPlugins.helm-diff];
})
cmctl cmctl
dyff dyff
gojq gojq

View file

@ -1,4 +1,5 @@
{config, ...}: { { config, ... }:
{
age.secrets."aerc-personal.conf".path = "${config.xdg.configHome}/aerc/accounts.conf"; age.secrets."aerc-personal.conf".path = "${config.xdg.configHome}/aerc/accounts.conf";
programs = { programs = {
aerc = { aerc = {

View file

@ -3,15 +3,17 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv.hostPlatform) isLinux; inherit (pkgs.stdenv.hostPlatform) isLinux;
in { in
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
programs.imv.enable = isLinux; programs.imv.enable = isLinux;
programs.mpv.enable = isLinux; programs.mpv.enable = isLinux;
programs.zathura.enable = isLinux; programs.zathura.enable = isLinux;
home.packages = lib.mkIf isLinux [(pkgs.callPackage ../../pkgs/apple-music.nix {})]; home.packages = lib.mkIf isLinux [ (pkgs.callPackage ../../pkgs/apple-music.nix { }) ];
services.mopidy = lib.mkIf isLinux { services.mopidy = lib.mkIf isLinux {
enable = true; enable = true;

View file

@ -1,13 +1,12 @@
{pkgs, ...}: let { pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) isLinux; inherit (pkgs.stdenv.hostPlatform) isLinux;
in { in
{
programs.newsboat = rec { programs.newsboat = rec {
enable = true; enable = true;
autoReload = true; autoReload = true;
browser = browser = if isLinux then "${pkgs.xdg-utils}/bin/xdg-open" else "open";
if isLinux
then "${pkgs.xdg-utils}/bin/xdg-open"
else "open";
extraConfig = '' extraConfig = ''
urls-source "freshrss" urls-source "freshrss"
freshrss-url "https://freshrss.winston.sh/api/greader.php" freshrss-url "https://freshrss.winston.sh/api/greader.php"

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv.hostPlatform) isLinux; inherit (pkgs.stdenv.hostPlatform) isLinux;
ctp = { ctp = {
base = "#1e1e2e"; base = "#1e1e2e";
@ -13,7 +14,8 @@
red = "#f38ba8"; red = "#f38ba8";
mauve = "#cba6f7"; mauve = "#cba6f7";
}; };
in { in
{
config = lib.mkIf config.isGraphical { config = lib.mkIf config.isGraphical {
programs.i3status-rust = lib.mkIf isLinux { programs.i3status-rust = lib.mkIf isLinux {
enable = true; enable = true;

View file

@ -4,9 +4,13 @@
osConfig, osConfig,
pkgs, pkgs,
... ...
}: let }:
let
fonts = { fonts = {
names = ["IBM Plex Sans" "Symbols Nerd Font"]; names = [
"IBM Plex Sans"
"Symbols Nerd Font"
];
size = 12.0; size = 12.0;
}; };
ctp = { ctp = {
@ -17,341 +21,344 @@
red = "#f38ba8"; red = "#f38ba8";
mauve = "#cba6f7"; mauve = "#cba6f7";
}; };
in { in
config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "sway")) { {
fonts.fontconfig.enable = true; config =
lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux && (osConfig.dotfiles.desktop == "sway"))
{
fonts.fontconfig.enable = true;
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
blueberry blueberry
kooha kooha
libnotify libnotify
pavucontrol pavucontrol
sway-contrib.grimshot sway-contrib.grimshot
swaynotificationcenter swaynotificationcenter
swayosd swayosd
wl-clipboard wl-clipboard
]; ];
}; };
services = { services = {
clipman.enable = true; clipman.enable = true;
gnome-keyring = { gnome-keyring = {
enable = true; enable = true;
components = ["secrets"]; components = [ "secrets" ];
}; };
wlsunset = { wlsunset = {
enable = true; enable = true;
latitude = toString config.location.latitude; latitude = toString config.location.latitude;
longitude = toString config.location.longitude; longitude = toString config.location.longitude;
}; };
udiskie.enable = true; udiskie.enable = true;
}; };
wayland.windowManager.sway = let wayland.windowManager.sway =
modifier = "Mod4"; let
in { modifier = "Mod4";
enable = true; in
package = null;
checkConfig = false;
config = rec {
inherit modifier;
focus.wrapping = "no";
focus.mouseWarping = "container";
startup = [
{ {
command = "${pkgs.autotiling}/bin/autotiling -l2"; enable = true;
always = true; package = null;
} checkConfig = false;
{ config = rec {
command = "1password --silent"; inherit modifier;
} focus.wrapping = "no";
{ focus.mouseWarping = "container";
command = '' startup = [
swayidle -w \ {
timeout 180 'swaylock -f' \ command = "${pkgs.autotiling}/bin/autotiling -l2";
timeout 360 'swaymsg "output * dpms off"' \ always = true;
resume 'swaymsg "output * dpms on"' \ }
before-sleep 'swaylock -f' { command = "1password --silent"; }
{
command = ''
swayidle -w \
timeout 180 'swaylock -f' \
timeout 360 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -f'
'';
always = true;
}
{
command = "${pkgs.swayosd}/bin/swayosd-server";
always = true;
}
{ command = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; }
];
workspaceAutoBackAndForth = true;
terminal = "${config.programs.wezterm.package}/bin/wezterm";
menu = "${config.programs.rofi.package}/bin/rofi";
defaultWorkspace = "workspace number 1";
input."type:keyboard".xkb_options = "ctrl:nocaps,compose:ralt";
output."*" = {
scale = "2";
bg = "${../wallpapers/dhm_1610.png} fill #171320";
};
keybindings =
let
mod = modifier;
modMove = "${mod}+Shift";
modFocus = "${mod}+Ctrl";
hyper = "Mod4+Mod1+Shift+Ctrl";
filebrowser = "${pkgs.gnome.nautilus}/bin/nautilus";
screenshot = "${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
playerctl = "${pkgs.playerctl}/bin/playerctl";
swayosd = pkgs.swayosd + "/bin/swayosd-client";
in
{
"${mod}+Shift+b" = "border none";
"${mod}+b" = "border pixel 2";
"${mod}+n" = "border normal";
# reload the configuration file
"${mod}+Shift+r" = "reload";
# kill focused window
"${mod}+Shift+q" = "kill";
# Start Applications
"${mod}+Shift+Return" = "exec ${terminal}";
"${mod}+e" = "exec --no-startup-id ${filebrowser}";
"${hyper}+p" = "exec --no-startup-id ${screenshot}";
# change focus
"${modFocus}+h" = "focus left";
"${modFocus}+j" = "focus down";
"${modFocus}+k" = "focus up";
"${modFocus}+l" = "focus right";
"${modFocus}+Left" = "focus left";
"${modFocus}+Down" = "focus down";
"${modFocus}+Up" = "focus up";
"${modFocus}+Right" = "focus right";
# move focus
"${modMove}+h" = "move left";
"${modMove}+j" = "move down";
"${modMove}+k" = "move up";
"${modMove}+l" = "move right";
"${modMove}+Left" = "move left";
"${modMove}+Down" = "move down";
"${modMove}+Up" = "move up";
"${modMove}+Right" = "move right";
# move workspaces across monitors
"${modMove}+greater" = "move workspace to output right";
"${modMove}+less" = "move workspace to output left";
# split orientation
"${mod}+q" = "split toggle";
# toggle fullscreen mode for the focused container
"${mod}+f" = "fullscreen toggle";
# change container layout (stacked, tabbed, toggle split)
"${mod}+s" = "layout toggle";
# toggle tiling / floating
"${mod}+Shift+d" = "floating toggle";
# change focus between tiling / floating windows
"${mod}+d" = "focus mode_toggle";
# toggle sticky
"${mod}+Shift+s" = "sticky toggle";
# focus the parent container
"${mod}+a" = "focus parent";
# move the currently focused window to the scratchpad
"${mod}+Shift+Tab" = "move scratchpad";
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
"${mod}+Tab" = "scratchpad show";
"${mod}+m" = "[class=\"discord\"] scratchpad show";
# switch to workspace
"${modFocus}+1" = "workspace 1";
"${modFocus}+2" = "workspace 2";
"${modFocus}+3" = "workspace 3";
"${modFocus}+4" = "workspace 4";
"${modFocus}+5" = "workspace 5";
"${modFocus}+6" = "workspace 6";
"${modFocus}+7" = "workspace 7";
"${modFocus}+8" = "workspace 8";
"${modFocus}+9" = "workspace 9";
"${modFocus}+0" = "workspace 10";
# Move to workspace with focused container
"${modMove}+1" = "move container to workspace 1; workspace 1";
"${modMove}+2" = "move container to workspace 2; workspace 2";
"${modMove}+3" = "move container to workspace 3; workspace 3";
"${modMove}+4" = "move container to workspace 4; workspace 4";
"${modMove}+5" = "move container to workspace 5; workspace 5";
"${modMove}+6" = "move container to workspace 6; workspace 6";
"${modMove}+7" = "move container to workspace 7; workspace 7";
"${modMove}+8" = "move container to workspace 8; workspace 8";
"${modMove}+9" = "move container to workspace 9; workspace 9";
"${modMove}+0" = "move container to workspace 10; workspace 10";
# rofi instead of drun
"${mod}+space" = "exec --no-startup-id ${menu} -show drun -dpi $dpi";
# 1password
"${mod}+Shift+space" = "exec ${pkgs._1password-gui}/bin/1password --quick-access";
# audio
"XF86AudioRaiseVolume" = "exec ${swayosd} --output-volume 5";
"XF86AudioLowerVolume" = "exec ${swayosd} --output-volume -5";
"XF86AudioMute" = "exec ${swayosd} --output-volume mute-toggle";
"XF86AudioNext" = "exec --no-startup-id ${playerctl} next";
"XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous";
"XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause";
# modes
"${mod}+r" = "mode \"resize\"";
"${mod}+p" = "mode \"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off\"";
};
modes = {
"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off" = {
l = "exec --no-startup-id swaylock --color 000000, mode \"default\"";
e = "exec --no-startup-id swaymsg exit, mode \"default\"";
r = "exec --no-startup-id systemctl reboot, mode \"default\"";
s = "exec --no-startup-id systemctl suspend, mode \"default\"";
h = "exec --no-startup-id systemctl hibernate, mode \"default\"";
"Shift+s" = "exec --no-startup-id systemctl poweroff, mode \"default\"";
Escape = "mode default";
Return = "mode default";
};
resize = {
Escape = "mode default";
Return = "mode default";
h = "resize shrink width 10 px or 10 ppt";
j = "resize grow height 10 px or 10 ppt";
k = "resize shrink height 10 px or 10 ppt";
l = "resize grow width 10 px or 10 ppt";
R = "resize set 50 ppt 50 ppt";
};
};
inherit fonts;
colors = rec {
focused = {
background = ctp.base;
border = ctp.pink;
childBorder = ctp.pink;
indicator = ctp.pink;
inherit (ctp) text;
};
urgent = {
background = ctp.base;
border = ctp.red;
childBorder = ctp.red;
indicator = ctp.red;
inherit (ctp) text;
};
unfocused = {
background = ctp.base;
border = ctp.mauve;
childBorder = ctp.mauve;
indicator = ctp.mauve;
inherit (ctp) text;
};
focusedInactive = unfocused;
placeholder = unfocused;
};
window = {
titlebar = false;
hideEdgeBorders = "none";
border = 2;
};
gaps = {
inner = 5;
outer = 2;
};
bars = [
{
inherit fonts;
mode = "hide";
position = "top";
statusCommand = "${config.programs.i3status-rust.package}/bin/i3status-rs ~/.config/i3status-rust/config-top.toml";
}
];
};
extraConfig = ''
for_window [floating] border pixel 2
# floating sticky
for_window [class="1Password"] floating enable sticky enable
for_window [window_role="PictureInPicture"] floating enable sticky enable
# floating
for_window [class="GParted"] floating enable
for_window [title="(?i)SteamTinkerLaunch"] floating enable
for_window [title="Blender Render"] floating enable
# general WM role settings
for_window [title="splash"] floating enable
for_window [urgent=latest] focus
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
# apps
for_window [class="Pavucontrol"] floating enable
for_window [class="Yad" title="Authentication"] floating enable
for_window [class="jetbrains*" title="Welcome*"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [title="Steam Guard*"] floating enable
# keep apps in scratchpad
for_window [class="discord"] move scratchpad sticky
set $mode_gaps Gaps: (o)uter, (i)nner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym ${modifier}+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
shadows enable
shadow_color #11111b99
shadow_blur_radius 20
corner_radius 5
smart_corner_radius enable
blur enable
blur_passes 2
blur_radius 4
layer_effects "swaync-notification-window" blur enable; shadows enable; corner_radius 5;
''; '';
always = true; systemd = {
} enable = true;
{ xdgAutostart = true;
command = "${pkgs.swayosd}/bin/swayosd-server"; };
always = true;
}
{
command = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
}
];
workspaceAutoBackAndForth = true;
terminal = "${config.programs.wezterm.package}/bin/wezterm";
menu = "${config.programs.rofi.package}/bin/rofi";
defaultWorkspace = "workspace number 1";
input."type:keyboard".xkb_options = "ctrl:nocaps,compose:ralt";
output."*" = {
scale = "2";
bg = "${../wallpapers/dhm_1610.png} fill #171320";
};
keybindings = let
mod = modifier;
modMove = "${mod}+Shift";
modFocus = "${mod}+Ctrl";
hyper = "Mod4+Mod1+Shift+Ctrl";
filebrowser = "${pkgs.gnome.nautilus}/bin/nautilus";
screenshot = "${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
playerctl = "${pkgs.playerctl}/bin/playerctl";
swayosd = pkgs.swayosd + "/bin/swayosd-client";
in {
"${mod}+Shift+b" = "border none";
"${mod}+b" = "border pixel 2";
"${mod}+n" = "border normal";
# reload the configuration file
"${mod}+Shift+r" = "reload";
# kill focused window
"${mod}+Shift+q" = "kill";
# Start Applications
"${mod}+Shift+Return" = "exec ${terminal}";
"${mod}+e" = "exec --no-startup-id ${filebrowser}";
"${hyper}+p" = "exec --no-startup-id ${screenshot}";
# change focus
"${modFocus}+h" = "focus left";
"${modFocus}+j" = "focus down";
"${modFocus}+k" = "focus up";
"${modFocus}+l" = "focus right";
"${modFocus}+Left" = "focus left";
"${modFocus}+Down" = "focus down";
"${modFocus}+Up" = "focus up";
"${modFocus}+Right" = "focus right";
# move focus
"${modMove}+h" = "move left";
"${modMove}+j" = "move down";
"${modMove}+k" = "move up";
"${modMove}+l" = "move right";
"${modMove}+Left" = "move left";
"${modMove}+Down" = "move down";
"${modMove}+Up" = "move up";
"${modMove}+Right" = "move right";
# move workspaces across monitors
"${modMove}+greater" = "move workspace to output right";
"${modMove}+less" = "move workspace to output left";
# split orientation
"${mod}+q" = "split toggle";
# toggle fullscreen mode for the focused container
"${mod}+f" = "fullscreen toggle";
# change container layout (stacked, tabbed, toggle split)
"${mod}+s" = "layout toggle";
# toggle tiling / floating
"${mod}+Shift+d" = "floating toggle";
# change focus between tiling / floating windows
"${mod}+d" = "focus mode_toggle";
# toggle sticky
"${mod}+Shift+s" = "sticky toggle";
# focus the parent container
"${mod}+a" = "focus parent";
# move the currently focused window to the scratchpad
"${mod}+Shift+Tab" = "move scratchpad";
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
"${mod}+Tab" = "scratchpad show";
"${mod}+m" = "[class=\"discord\"] scratchpad show";
# switch to workspace
"${modFocus}+1" = "workspace 1";
"${modFocus}+2" = "workspace 2";
"${modFocus}+3" = "workspace 3";
"${modFocus}+4" = "workspace 4";
"${modFocus}+5" = "workspace 5";
"${modFocus}+6" = "workspace 6";
"${modFocus}+7" = "workspace 7";
"${modFocus}+8" = "workspace 8";
"${modFocus}+9" = "workspace 9";
"${modFocus}+0" = "workspace 10";
# Move to workspace with focused container
"${modMove}+1" = "move container to workspace 1; workspace 1";
"${modMove}+2" = "move container to workspace 2; workspace 2";
"${modMove}+3" = "move container to workspace 3; workspace 3";
"${modMove}+4" = "move container to workspace 4; workspace 4";
"${modMove}+5" = "move container to workspace 5; workspace 5";
"${modMove}+6" = "move container to workspace 6; workspace 6";
"${modMove}+7" = "move container to workspace 7; workspace 7";
"${modMove}+8" = "move container to workspace 8; workspace 8";
"${modMove}+9" = "move container to workspace 9; workspace 9";
"${modMove}+0" = "move container to workspace 10; workspace 10";
# rofi instead of drun
"${mod}+space" = "exec --no-startup-id ${menu} -show drun -dpi $dpi";
# 1password
"${mod}+Shift+space" = "exec ${pkgs._1password-gui}/bin/1password --quick-access";
# audio
"XF86AudioRaiseVolume" = "exec ${swayosd} --output-volume 5";
"XF86AudioLowerVolume" = "exec ${swayosd} --output-volume -5";
"XF86AudioMute" = "exec ${swayosd} --output-volume mute-toggle";
"XF86AudioNext" = "exec --no-startup-id ${playerctl} next";
"XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous";
"XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause";
# modes
"${mod}+r" = "mode \"resize\"";
"${mod}+p" = "mode \"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off\"";
};
modes = {
"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off" = {
l = "exec --no-startup-id swaylock --color 000000, mode \"default\"";
e = "exec --no-startup-id swaymsg exit, mode \"default\"";
r = "exec --no-startup-id systemctl reboot, mode \"default\"";
s = "exec --no-startup-id systemctl suspend, mode \"default\"";
h = "exec --no-startup-id systemctl hibernate, mode \"default\"";
"Shift+s" = "exec --no-startup-id systemctl poweroff, mode \"default\"";
Escape = "mode default";
Return = "mode default";
}; };
resize = {
Escape = "mode default";
Return = "mode default";
h = "resize shrink width 10 px or 10 ppt";
j = "resize grow height 10 px or 10 ppt";
k = "resize shrink height 10 px or 10 ppt";
l = "resize grow width 10 px or 10 ppt";
R = "resize set 50 ppt 50 ppt";
};
};
inherit fonts;
colors = rec {
focused = {
background = ctp.base;
border = ctp.pink;
childBorder = ctp.pink;
indicator = ctp.pink;
inherit (ctp) text;
};
urgent = {
background = ctp.base;
border = ctp.red;
childBorder = ctp.red;
indicator = ctp.red;
inherit (ctp) text;
};
unfocused = {
background = ctp.base;
border = ctp.mauve;
childBorder = ctp.mauve;
indicator = ctp.mauve;
inherit (ctp) text;
};
focusedInactive = unfocused;
placeholder = unfocused;
};
window = {
titlebar = false;
hideEdgeBorders = "none";
border = 2;
};
gaps = {
inner = 5;
outer = 2;
};
bars = [
{
inherit fonts;
mode = "hide";
position = "top";
statusCommand = "${config.programs.i3status-rust.package}/bin/i3status-rs ~/.config/i3status-rust/config-top.toml";
}
];
}; };
extraConfig = ''
for_window [floating] border pixel 2
# floating sticky
for_window [class="1Password"] floating enable sticky enable
for_window [window_role="PictureInPicture"] floating enable sticky enable
# floating
for_window [class="GParted"] floating enable
for_window [title="(?i)SteamTinkerLaunch"] floating enable
for_window [title="Blender Render"] floating enable
# general WM role settings
for_window [title="splash"] floating enable
for_window [urgent=latest] focus
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
# apps
for_window [class="Pavucontrol"] floating enable
for_window [class="Yad" title="Authentication"] floating enable
for_window [class="jetbrains*" title="Welcome*"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [title="Steam Guard*"] floating enable
# keep apps in scratchpad
for_window [class="discord"] move scratchpad sticky
set $mode_gaps Gaps: (o)uter, (i)nner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym ${modifier}+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
shadows enable
shadow_color #11111b99
shadow_blur_radius 20
corner_radius 5
smart_corner_radius enable
blur enable
blur_passes 2
blur_radius 4
layer_effects "swaync-notification-window" blur enable; shadows enable; corner_radius 5;
'';
systemd = {
enable = true;
xdgAutostart = true;
};
};
};
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: let { pkgs, ... }:
let
inherit (pkgs.tmuxPlugins) mkTmuxPlugin; inherit (pkgs.tmuxPlugins) mkTmuxPlugin;
menus = mkTmuxPlugin { menus = mkTmuxPlugin {
@ -21,7 +22,8 @@
sha256 = "sha256-c5EGBrKcrqHWTKpCEhxYfxPeERFrbTuDfcQhsUAbic4="; sha256 = "sha256-c5EGBrKcrqHWTKpCEhxYfxPeERFrbTuDfcQhsUAbic4=";
}; };
}; };
in { in
{
programs.tmux = { programs.tmux = {
enable = true; enable = true;
sensibleOnTop = true; sensibleOnTop = true;

View file

@ -5,13 +5,15 @@
pkgs, pkgs,
isNixOS, isNixOS,
... ...
}: let }:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
settingsJSON = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/settings.json"; settingsJSON = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/settings.json";
keybindingsJSON = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/keybindings.json"; keybindingsJSON = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/keybindings.json";
snippetsDir = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/snippets"; snippetsDir = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/vscode/snippets";
in { in
{
programs.vscode = { programs.vscode = {
enable = config.isGraphical; enable = config.isGraphical;
extensions = extensions =
@ -36,24 +38,11 @@ in {
# some default config patching to make these work without needing devShells all the time. # some default config patching to make these work without needing devShells all the time.
# other extensions like Go/Rust are only really used with devShells, # other extensions like Go/Rust are only really used with devShells,
# nix & shell are universal enough for me to want them everywhere. # nix & shell are universal enough for me to want them everywhere.
(jnoortheen.nix-ide.overrideAttrs (prev: {
nativeBuildInputs = prev.nativeBuildInputs ++ [pkgs.jq pkgs.moreutils];
postInstall = ''
cd "$out/$installPrefix"
jq -e '
.contributes.configuration.properties."nix.formatterPath".default =
"${pkgs.alejandra}/bin/alejandra" |
.contributes.configuration.properties."nix.enableLanguageServer".default =
"true" |
.contributes.configuration.properties."nix.serverPath".default =
"${pkgs.nil}/bin/nil" |
.contributes.configuration.properties."nix.serverSettings".default.nil.formatting.command[0] =
"${pkgs.alejandra}/bin/alejandra"
' < package.json | sponge package.json
'';
}))
(mads-hartmann.bash-ide-vscode.overrideAttrs (prev: { (mads-hartmann.bash-ide-vscode.overrideAttrs (prev: {
nativeBuildInputs = prev.nativeBuildInputs ++ [pkgs.jq pkgs.moreutils]; nativeBuildInputs = prev.nativeBuildInputs ++ [
pkgs.jq
pkgs.moreutils
];
postInstall = '' postInstall = ''
cd "$out/$installPrefix" cd "$out/$installPrefix"
jq -e ' jq -e '
@ -63,7 +52,10 @@ in {
''; '';
})) }))
(mkhl.shfmt.overrideAttrs (prev: { (mkhl.shfmt.overrideAttrs (prev: {
nativeBuildInputs = prev.nativeBuildInputs ++ [pkgs.jq pkgs.moreutils]; nativeBuildInputs = prev.nativeBuildInputs ++ [
pkgs.jq
pkgs.moreutils
];
postInstall = '' postInstall = ''
cd "$out/$installPrefix" cd "$out/$installPrefix"
jq -e ' jq -e '
@ -72,8 +64,6 @@ in {
' < package.json | sponge package.json ' < package.json | sponge package.json
''; '';
})) }))
ms-vscode-remote.remote-ssh-edit
ms-vscode.remote-explorer
adrianwilczynski.alpine-js-intellisense adrianwilczynski.alpine-js-intellisense
antfu.icons-carbon antfu.icons-carbon
arcanis.vscode-zipfs arcanis.vscode-zipfs
@ -95,13 +85,18 @@ in {
golang.go golang.go
graphql.vscode-graphql-syntax graphql.vscode-graphql-syntax
gruntfuggly.todo-tree gruntfuggly.todo-tree
hbenl.vscode-test-explorer
jnoortheen.nix-ide
jock.svg jock.svg
leonardssh.vscord leonardssh.vscord
lunuan.kubernetes-templates lunuan.kubernetes-templates
mikestead.dotenv mikestead.dotenv
mkhl.direnv mkhl.direnv
ms-kubernetes-tools.vscode-kubernetes-tools ms-kubernetes-tools.vscode-kubernetes-tools
ms-vscode-remote.remote-ssh-edit
ms-vscode.live-server ms-vscode.live-server
ms-vscode.remote-explorer
ms-vscode.test-adapter-converter
oscarotero.vento-syntax oscarotero.vento-syntax
redhat.vscode-yaml redhat.vscode-yaml
ryanluker.vscode-coverage-gutters ryanluker.vscode-coverage-gutters
@ -113,19 +108,7 @@ in {
usernamehw.errorlens usernamehw.errorlens
vscodevim.vim vscodevim.vim
wakatime.vscode-wakatime wakatime.vscode-wakatime
ms-vscode.test-adapter-converter
hbenl.vscode-test-explorer
webfreak.code-d webfreak.code-d
# (webfreak.code-d.overrideAttrs (prev: {
# nativeBuildInputs = prev.nativeBuildInputs ++ [pkgs.jq pkgs.moreutils];
# postInstall = ''
# cd "$out/$installPrefix"
# jq -e '
# .contributes.configuration.properties."d.dcdClientPath".default =
# "${pkgs.alejandra}/bin/alejandra"
# ' < package.json | sponge package.json
# '';
# }))
]); ]);
mutableExtensionsDir = true; mutableExtensionsDir = true;
}; };

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
commonSettings = { commonSettings = {
layer = "top"; layer = "top";
position = "top"; position = "top";
@ -12,7 +13,7 @@
spacing = 2; spacing = 2;
margin = "2"; margin = "2";
modules-center = ["hyprland/window"]; modules-center = [ "hyprland/window" ];
modules-right = [ modules-right = [
"tray" "tray"
"idle_inhibitor" "idle_inhibitor"
@ -112,34 +113,33 @@
padding: 0 10px; padding: 0 10px;
} }
''; '';
in { in
{
config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux) { config = lib.mkIf (config.isGraphical && pkgs.stdenv.isLinux) {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
settings = { settings = {
hyprland = hyprland = commonSettings // {
commonSettings modules-left = [ "hyprland/workspaces" ];
// { "hyprland/workspaces" = {
modules-left = ["hyprland/workspaces"]; format = "{icon}";
"hyprland/workspaces" = { on-click = "activate";
format = "{icon}"; format-icons = {
on-click = "activate"; "1" = "";
format-icons = { "2" = "";
"1" = ""; "3" = "";
"2" = ""; "4" = "";
"3" = ""; "5" = "";
"4" = ""; "6" = "";
"5" = ""; "7" = "";
"6" = ""; "8" = "";
"7" = ""; "9" = "";
"8" = ""; "10" = "";
"9" = "";
"10" = "";
};
persistent-workspaces."*" = 10;
}; };
persistent-workspaces."*" = 10;
}; };
};
}; };
}; };
xdg.configFile = { xdg.configFile = {

View file

@ -4,15 +4,15 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
mkSymlink = path: config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/wezterm/${path}"; mkSymlink = path: config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/wezterm/${path}";
srcs = pkgs.callPackage ../../_sources/generated.nix {}; srcs = pkgs.callPackage ../../_sources/generated.nix { };
in { in
{
# use the GUI version & config when we have a gui, else just get terminfo # use the GUI version & config when we have a gui, else just get terminfo
config = lib.mkMerge [ config = lib.mkMerge [
(lib.mkIf (!config.isGraphical) { (lib.mkIf (!config.isGraphical) { home.packages = [ pkgs.wezterm.terminfo ]; })
home.packages = [pkgs.wezterm.terminfo];
})
(lib.mkIf config.isGraphical { (lib.mkIf config.isGraphical {
programs.wezterm.enable = true; programs.wezterm.enable = true;

View file

@ -3,26 +3,29 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv) isLinux; inherit (pkgs.stdenv) isLinux;
srcs = pkgs.callPackage ../../_sources/generated.nix {}; srcs = pkgs.callPackage ../../_sources/generated.nix { };
zshPlugins = plugins: (map (plugin: rec { zshPlugins =
plugins:
(map (plugin: rec {
name = src.name; name = src.name;
inherit (plugin) file src; inherit (plugin) file src;
}) }) plugins);
plugins); in
in { {
home.sessionVariables = { home.sessionVariables = {
LESS = "-R --use-color"; LESS = "-R --use-color";
LESSHISTFILE = "-"; LESSHISTFILE = "-";
MANPAGER = "sh -c 'col -bx | bat -l man -p'"; MANPAGER = "sh -c 'col -bx | bat -l man -p'";
}; };
home.packages = [pkgs.onefetch]; home.packages = [ pkgs.onefetch ];
programs = { programs = {
atuin = { atuin = {
enable = true; enable = true;
flags = ["--disable-up-arrow"]; flags = [ "--disable-up-arrow" ];
settings = { settings = {
inline_height = 30; inline_height = 30;
style = "compact"; style = "compact";
@ -87,7 +90,11 @@ in {
prompt = "#cba6f7"; prompt = "#cba6f7";
spinner = "#f5e0dc"; spinner = "#f5e0dc";
}; };
defaultOptions = ["--height=30%" "--layout=reverse" "--info=inline"]; defaultOptions = [
"--height=30%"
"--layout=reverse"
"--info=inline"
];
}; };
less.enable = true; less.enable = true;
@ -161,8 +168,16 @@ in {
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
plugins = plugins =
["colored-man-pages" "colorize" "git" "kubectl"] [
++ lib.optionals pkgs.stdenv.isDarwin ["dash" "macos"]; "colored-man-pages"
"colorize"
"git"
"kubectl"
]
++ lib.optionals pkgs.stdenv.isDarwin [
"dash"
"macos"
];
}; };
plugins = zshPlugins [ plugins = zshPlugins [
{ {

View file

@ -3,41 +3,51 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
in { in
imports = [./apps ./secrets ./xdg.nix]; {
imports = [
./apps
./secrets
./xdg.nix
];
home = { home = {
packages = with pkgs; ([ packages =
_1password with pkgs;
age (
age-plugin-yubikey [
catppuccin-catwalk _1password
catppuccin-whiskers age
deno age-plugin-yubikey
fd catppuccin-catwalk
ffmpeg catppuccin-whiskers
file deno
gh fd
git-crypt ffmpeg
gocryptfs file
imagemagick gh
just git-crypt
mdcat gocryptfs
nix-output-monitor imagemagick
nur.repos.nekowinston.icat just
nvd mdcat
ranger nix-output-monitor
ripgrep nur.repos.nekowinston.icat
wakatime nvd
watchexec ranger
] ripgrep
++ lib.optionals (config.isGraphical && isLinux) [ wakatime
_1password-gui watchexec
uhk-agent ]
neovide ++ lib.optionals (config.isGraphical && isLinux) [
]); _1password-gui
uhk-agent
neovide
]
);
sessionVariables = lib.mkIf isDarwin { sessionVariables = lib.mkIf isDarwin {
SSH_AUTH_SOCK = "${config.programs.gpg.homedir}/S.gpg-agent.ssh"; SSH_AUTH_SOCK = "${config.programs.gpg.homedir}/S.gpg-agent.ssh";
}; };

View file

@ -3,24 +3,24 @@
pkgs, pkgs,
username, username,
isNixOS ? true, isNixOS ? true,
}: rec { }:
rec {
inherit (pkgs.stdenv) isLinux isDarwin; inherit (pkgs.stdenv) isLinux isDarwin;
extraSpecialArgs = { extraSpecialArgs = {
flakePath = flakePath =
if isDarwin if isDarwin then "/Users/${username}/.config/flake" else "/home/${username}/.config/flake";
then "/Users/${username}/.config/flake"
else "/home/${username}/.config/flake";
inherit inputs isNixOS; inherit inputs isNixOS;
}; };
hmStandaloneConfig = { hmStandaloneConfig = {
home.homeDirectory = home.homeDirectory =
if isLinux if isLinux then
then "/home/${username}" "/home/${username}"
else if isDarwin else if isDarwin then
then "/Users/${username}" "/Users/${username}"
else throw "Unsupported system"; else
throw "Unsupported system";
home.username = username; home.username = username;
isGraphical = false; isGraphical = false;
targets.genericLinux.enable = isLinux; targets.genericLinux.enable = isLinux;
@ -36,32 +36,32 @@
vscode-server.homeModules.default vscode-server.homeModules.default
]) ])
++ [ ++ [
({ (
osConfig, { osConfig, lib, ... }:
lib, let
... inherit (lib) mkOption types;
}: let in
inherit (lib) mkOption types; {
in { options = {
options = { isGraphical = mkOption {
isGraphical = mkOption { default = osConfig.isGraphical;
default = osConfig.isGraphical; description = "Whether the system is a graphical target";
description = "Whether the system is a graphical target"; type = types.bool;
type = types.bool;
};
location = {
latitude = mkOption {
default = osConfig.location.latitude;
type = types.nullOr types.float;
}; };
longitude = mkOption { location = {
default = osConfig.location.longitude; latitude = mkOption {
type = types.nullOr types.float; default = osConfig.location.latitude;
type = types.nullOr types.float;
};
longitude = mkOption {
default = osConfig.location.longitude;
type = types.nullOr types.float;
};
}; };
}; };
}; }
}) )
] ]
++ pkgs.lib.optionals (!isNixOS) [hmStandaloneConfig] ++ pkgs.lib.optionals (!isNixOS) [ hmStandaloneConfig ]
++ [./.]; ++ [ ./. ];
} }

View file

@ -3,17 +3,24 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv) isDarwin; inherit (pkgs.stdenv) isDarwin;
in { in
{
age = { age = {
identityPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; identityPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519" ];
secrets = with builtins; secrets =
listToAttrs (map (k: { with builtins;
name = lib.removePrefix "home/secrets/" (lib.removeSuffix ".age" k); listToAttrs (
value = {file = ./../.. + "/${k}";}; map (k: {
}) (attrNames (import ./secrets.nix))); name = lib.removePrefix "home/secrets/" (lib.removeSuffix ".age" k);
value = {
file = ./../.. + "/${k}";
};
}) (attrNames (import ./secrets.nix))
);
secretsDir = lib.mkIf isDarwin "/private/tmp/agenix"; secretsDir = lib.mkIf isDarwin "/private/tmp/agenix";
secretsMountPoint = lib.mkIf isDarwin "/private/tmp/agenix.d"; secretsMountPoint = lib.mkIf isDarwin "/private/tmp/agenix.d";

View file

@ -6,8 +6,9 @@ let
}; };
yubikeys._5ci = "age1yubikey1qfkn095xth4ukxjye98ew4ul6xdkyz7sek0hd67yfjs5z6tv7q9jgnfchls"; yubikeys._5ci = "age1yubikey1qfkn095xth4ukxjye98ew4ul6xdkyz7sek0hd67yfjs5z6tv7q9jgnfchls";
default = [yubikeys._5ci] ++ (builtins.attrValues homes); default = [ yubikeys._5ci ] ++ (builtins.attrValues homes);
in { in
{
"home/secrets/aerc-personal.conf.age".publicKeys = default; "home/secrets/aerc-personal.conf.age".publicKeys = default;
"home/secrets/gitconfig-freelance.age".publicKeys = default; "home/secrets/gitconfig-freelance.age".publicKeys = default;
"home/secrets/gitconfig-work.age".publicKeys = default; "home/secrets/gitconfig-work.age".publicKeys = default;

View file

@ -5,11 +5,18 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
inherit (config.xdg) cacheHome configHome dataHome stateHome; inherit (config.xdg)
cacheHome
configHome
dataHome
stateHome
;
inherit (config.home) homeDirectory; inherit (config.home) homeDirectory;
in { in
{
home = rec { home = rec {
sessionVariables = { sessionVariables = {
AZURE_CONFIG_DIR = "${configHome}/azure"; AZURE_CONFIG_DIR = "${configHome}/azure";

View file

@ -1,9 +1,6 @@
{ pkgs, lib, ... }:
{ {
pkgs, imports = [ ./options.nix ];
lib,
...
}: {
imports = [./options.nix];
# manipulate the global /etc/zshenv for PATH, etc. # manipulate the global /etc/zshenv for PATH, etc.
programs.zsh.enable = true; programs.zsh.enable = true;
@ -40,98 +37,96 @@
mouse_follows_focus = "off"; mouse_follows_focus = "off";
focus_follows_mouse = "off"; focus_follows_mouse = "off";
}; };
extraConfig = let extraConfig =
rule = "yabai -m rule"; let
mkRules = apps: options: rule = "yabai -m rule";
builtins.concatStringsSep "\n" (map (app: ''yabai -m rule --add app="${app}" ${options}'') apps); mkRules =
unmanaged = apps: mkRules apps "manage=off"; apps: options:
in '' builtins.concatStringsSep "\n" (map (app: ''yabai -m rule --add app="${app}" ${options}'') apps);
# auto-inject scripting additions unmanaged = apps: mkRules apps "manage=off";
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" in
sudo yabai --load-sa ''
# auto-inject scripting additions
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa
# ensure that there are always 10 spaces # ensure that there are always 10 spaces
spacestocreate=10 spacestocreate=10
spaces=$((spacestocreate - $(yabai -m query --spaces | ${pkgs.jq}/bin/jq length))) spaces=$((spacestocreate - $(yabai -m query --spaces | ${pkgs.jq}/bin/jq length)))
while [ "$spaces" -gt 0 ]; do while [ "$spaces" -gt 0 ]; do
yabai -m space --create yabai -m space --create
spaces=$((spaces - 1)) spaces=$((spaces - 1))
done done
# make the spaces auto-balance # make the spaces auto-balance
for i in {1..10}; do for i in {1..10}; do
yabai -m config --space "$i" auto_balance on yabai -m config --space "$i" auto_balance on
done done
${unmanaged [ ${unmanaged [
"CleanShot" "CleanShot"
"GOG Galaxy" "GOG Galaxy"
"Godot" "Godot"
"JetBrains Toolbox" "JetBrains Toolbox"
"Mullvad VPN" "Mullvad VPN"
"OBS Studio" "OBS Studio"
"Sip" "Sip"
"Steam" "Steam"
"System Settings" "System Settings"
"iStat Menus" "iStat Menus"
]} ]}
${rule} --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off ${rule} --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
${rule} --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off ${rule} --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off
''; '';
}; };
skhd = { skhd = {
enable = true; enable = true;
skhdConfig = let skhdConfig =
mapKeymaps = cmd: let
builtins.concatStringsSep "\n" ( mapKeymaps =
map (i: cmd:
builtins.replaceStrings ["Num"] [ builtins.concatStringsSep "\n" (
(toString ( map (i: builtins.replaceStrings [ "Num" ] [ (toString (if (i == 10) then 0 else i)) ] cmd) (
if (i == 10) lib.range 1 10
then 0 )
else i );
)) in
] ''
cmd) ( #!/usr/bin/env sh
lib.range 1 10 # focus window
) cmd + ctrl - h : yabai -m window --focus west
); cmd + ctrl - j : yabai -m window --focus south
in '' cmd + ctrl - k : yabai -m window --focus north
#!/usr/bin/env sh cmd + ctrl - l : yabai -m window --focus east
# focus window # move window
cmd + ctrl - h : yabai -m window --focus west cmd + shift - h : yabai -m window --warp west
cmd + ctrl - j : yabai -m window --focus south cmd + shift - j : yabai -m window --warp south
cmd + ctrl - k : yabai -m window --focus north cmd + shift - k : yabai -m window --warp north
cmd + ctrl - l : yabai -m window --focus east cmd + shift - l : yabai -m window --warp east
# move window # toggle sticky/floating
cmd + shift - h : yabai -m window --warp west cmd + shift - s: yabai -m window --toggle sticky --toggle float --toggle topmost
cmd + shift - j : yabai -m window --warp south cmd + shift - d: yabai -m window --toggle float
cmd + shift - k : yabai -m window --warp north # rotate
cmd + shift - l : yabai -m window --warp east cmd + ctrl - e : yabai -m space --balance
# toggle sticky/floating cmd + ctrl - r : yabai -m space --rotate 270
cmd + shift - s: yabai -m window --toggle sticky --toggle float --toggle topmost # open terminal
cmd + shift - d: yabai -m window --toggle float cmd + shift - return : open -na "''${HOME}/Applications/Home Manager Apps/WezTerm.app"
# rotate # restart yabai
cmd + ctrl - e : yabai -m space --balance cmd + alt - r : brew services restart yabai
cmd + ctrl - r : yabai -m space --rotate 270
# open terminal
cmd + shift - return : open -na "''${HOME}/Applications/Home Manager Apps/WezTerm.app"
# restart yabai
cmd + alt - r : brew services restart yabai
# ONLY WORKS WITH SIP DISABLED: # ONLY WORKS WITH SIP DISABLED:
# fast focus space left/right # fast focus space left/right
ctrl - left : yabai -m space --focus prev ctrl - left : yabai -m space --focus prev
ctrl - right : yabai -m space --focus next ctrl - right : yabai -m space --focus next
# switch to space # switch to space
${mapKeymaps "cmd + ctrl - Num : yabai -m space --focus Num"} ${mapKeymaps "cmd + ctrl - Num : yabai -m space --focus Num"}
# send window to desktop, follow focus, and move out of scratchpad # send window to desktop, follow focus, and move out of scratchpad
${mapKeymaps "cmd + shift - Num : yabai -m window --space Num; yabai -m space --focus Num; yabai -m window --scratchpad ''"} ${mapKeymaps "cmd + shift - Num : yabai -m window --space Num; yabai -m space --focus Num; yabai -m window --scratchpad ''"}
cmd - tab : yabai -m window --toggle main cmd - tab : yabai -m window --toggle main
cmd + shift - tab : yabai -m window --scratchpad main cmd + shift - tab : yabai -m window --scratchpad main
''; '';
}; };
}; };
} }

View file

@ -1,8 +1,10 @@
{lib, ...}: let { lib, ... }:
let
inherit (lib) mkOption types; inherit (lib) mkOption types;
in { in
{
options.location = { options.location = {
latitude = mkOption {type = types.nullOr types.float;}; latitude = mkOption { type = types.nullOr types.float; };
longitude = mkOption {type = types.nullOr types.float;}; longitude = mkOption { type = types.nullOr types.float; };
}; };
} }

View file

@ -4,7 +4,7 @@
loader.systemd-boot.enable = true; loader.systemd-boot.enable = true;
initrd.systemd.enable = true; initrd.systemd.enable = true;
supportedFilesystems = ["ntfs"]; supportedFilesystems = [ "ntfs" ];
plymouth.enable = true; plymouth.enable = true;
}; };

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
imports = [ imports = [
./boot.nix ./boot.nix
./gnome.nix ./gnome.nix
@ -38,7 +39,7 @@
programs.nix-ld.enable = true; programs.nix-ld.enable = true;
programs.zsh.enable = true; programs.zsh.enable = true;
environment.systemPackages = [pkgs.xdg-utils]; environment.systemPackages = [ pkgs.xdg-utils ];
# enable yubikey u2f support # enable yubikey u2f support
security.pam.u2f = { security.pam.u2f = {

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
config = lib.mkIf (config.dotfiles.desktop == "gnome") { config = lib.mkIf (config.dotfiles.desktop == "gnome") {
services.xserver = { services.xserver = {
enable = true; enable = true;
@ -11,7 +12,7 @@
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
}; };
environment.systemPackages = with pkgs; [gnomeExtensions.appindicator]; environment.systemPackages = with pkgs; [ gnomeExtensions.appindicator ];
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
config = lib.mkIf (config.dotfiles.desktop == "sway") { config = lib.mkIf (config.dotfiles.desktop == "sway") {
services.greetd = { services.greetd = {
enable = true; enable = true;
@ -27,13 +28,13 @@
# start a keyring daemon for sway # start a keyring daemon for sway
systemd = { systemd = {
packages = [pkgs.polkit_gnome]; packages = [ pkgs.polkit_gnome ];
user.services.polkit-gnome-authentication-agent-1 = { user.services.polkit-gnome-authentication-agent-1 = {
unitConfig = { unitConfig = {
Description = "polkit-gnome-authentication-agent-1"; Description = "polkit-gnome-authentication-agent-1";
Wants = ["graphical-session.target"]; Wants = [ "graphical-session.target" ];
WantedBy = ["graphical-session.target"]; WantedBy = [ "graphical-session.target" ];
After = ["graphical-session.target"]; After = [ "graphical-session.target" ];
}; };
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";

View file

@ -1,10 +1,11 @@
{pkgs, ...}: { { pkgs, ... }:
{
hardware.keyboard.qmk.enable = true; hardware.keyboard.qmk.enable = true;
services.udev.packages = [pkgs.uhk-udev-rules]; services.udev.packages = [ pkgs.uhk-udev-rules ];
services.kanata = { services.kanata = {
enable = true; enable = true;
keyboards.keychron-k6 = { keyboards.keychron-k6 = {
devices = ["/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd"]; devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd" ];
config = '' config = ''
(defsrc (defsrc
esc 1 2 3 4 5 6 7 8 9 0 - = bspc esc 1 2 3 4 5 6 7 8 9 0 - = bspc

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
services = { services = {
dnsmasq = { dnsmasq = {
enable = true; enable = true;
@ -26,25 +27,23 @@
}; };
stubby = { stubby = {
enable = true; enable = true;
settings = settings = pkgs.stubby.passthru.settingsExample // {
pkgs.stubby.passthru.settingsExample resolution_type = "GETDNS_RESOLUTION_STUB";
// { listen_addresses = [
resolution_type = "GETDNS_RESOLUTION_STUB"; "127.0.0.1@53000"
listen_addresses = [ "0::1@53000"
"127.0.0.1@53000" ];
"0::1@53000" upstream_recursive_servers = [
]; {
upstream_recursive_servers = [ address_data = "146.255.56.98";
{ tls_auth_name = "dot1.applied-privacy.net";
address_data = "146.255.56.98"; }
tls_auth_name = "dot1.applied-privacy.net"; {
} address_data = "2a01:4f8:c0c:83ed::1";
{ tls_auth_name = "dot1.applied-privacy.net";
address_data = "2a01:4f8:c0c:83ed::1"; }
tls_auth_name = "dot1.applied-privacy.net"; ];
} };
];
};
}; };
}; };
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
virtualisation.podman = { virtualisation.podman = {
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [

View file

@ -1,4 +1,5 @@
{config, ...}: { { config, ... }:
{
programs.noisetorch.enable = config.isGraphical; programs.noisetorch.enable = config.isGraphical;
security.rtkit.enable = true; security.rtkit.enable = true;
services = { services = {

View file

@ -3,7 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }:
{
config = lib.mkIf (config.dotfiles.desktop == "sway") { config = lib.mkIf (config.dotfiles.desktop == "sway") {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# file management # file management
@ -22,7 +23,7 @@
]; ];
programs.dconf.enable = true; programs.dconf.enable = true;
environment.pathsToLink = ["/share/nautilus-python/extensions"]; environment.pathsToLink = [ "/share/nautilus-python/extensions" ];
environment.sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-4"; environment.sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-4";
programs.hyprland.enable = true; programs.hyprland.enable = true;

View file

@ -40,7 +40,10 @@
keyFile = builtins.toString ../certs/local.key; keyFile = builtins.toString ../certs/local.key;
}; };
http.routers.traefik = { http.routers.traefik = {
entryPoints = ["http" "https"]; entryPoints = [
"http"
"https"
];
rule = "Host(`traefik.this.test`)"; rule = "Host(`traefik.this.test`)";
tls = true; tls = true;
service = "api@internal"; service = "api@internal";

View file

@ -3,41 +3,42 @@
inputs, inputs,
pkgs, pkgs,
... ...
}: let }:
let
inherit (builtins) attrValues mapAttrs; inherit (builtins) attrValues mapAttrs;
inherit (lib) filterAttrs; inherit (lib) filterAttrs;
inherit (pkgs.stdenv) isDarwin isLinux; inherit (pkgs.stdenv) isDarwin isLinux;
flakeInputs = filterAttrs (name: value: (value ? outputs) && (name != "self")) inputs; flakeInputs = filterAttrs (name: value: (value ? outputs) && (name != "self")) inputs;
in { in
{
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nix = { nix = {
gc.automatic = true; gc.automatic = true;
package = pkgs.nixVersions.nix_2_22; package = pkgs.nixVersions.nix_2_22;
settings = settings = {
{ # breaks the Nix Store on macOS
# breaks the Nix Store on macOS # https://github.com/NixOS/nix/issues/7273
# https://github.com/NixOS/nix/issues/7273 auto-optimise-store = isLinux;
auto-optimise-store = isLinux; experimental-features = [
experimental-features = [ "auto-allocate-uids"
"auto-allocate-uids" "flakes"
"flakes" "nix-command"
"nix-command" ];
]; trusted-users = [
trusted-users = [ "@sudo"
"@sudo" "@wheel"
"@wheel" "winston"
"winston" ];
]; use-xdg-base-directories = true;
use-xdg-base-directories = true; warn-dirty = false;
warn-dirty = false; } // (import ../../../flake.nix).nixConfig;
} registry = mapAttrs (name: v: { flake = v; }) flakeInputs;
// (import ../../../flake.nix).nixConfig;
registry = mapAttrs (name: v: {flake = v;}) flakeInputs;
nixPath = nixPath =
if isDarwin if isDarwin then
then lib.mkForce (mapAttrs (k: v: v.outPath) flakeInputs) lib.mkForce (mapAttrs (k: v: v.outPath) flakeInputs)
else if isLinux else if isLinux then
then attrValues (mapAttrs (k: v: "${k}=${v.outPath}") flakeInputs) attrValues (mapAttrs (k: v: "${k}=${v.outPath}") flakeInputs)
else throw "Unsupported platform"; else
throw "Unsupported platform";
}; };
} }

View file

@ -3,26 +3,32 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }:
let
homeRoot = homeRoot =
if pkgs.stdenv.isDarwin if pkgs.stdenv.isDarwin then
then "/Users" "/Users"
else if pkgs.stdenv.isLinux else if pkgs.stdenv.isLinux then
then "/home" "/home"
else throw "Unsupported OS"; else
in { throw "Unsupported OS";
in
{
users.users."${config.dotfiles.username}" = users.users."${config.dotfiles.username}" =
{ {
home = "${homeRoot}/${config.dotfiles.username}"; home = "${homeRoot}/${config.dotfiles.username}";
openssh.authorizedKeys.keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILm0O46zW/XfVOSwz0okRWYeOAg+wCVkCtCAoVTpZsOh"]; openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILm0O46zW/XfVOSwz0okRWYeOAg+wCVkCtCAoVTpZsOh"
];
shell = pkgs.zsh; shell = pkgs.zsh;
} }
// ( // (
if pkgs.stdenv.isLinux if pkgs.stdenv.isLinux then
then { {
isNormalUser = lib.mkIf pkgs.stdenv.isLinux true; isNormalUser = lib.mkIf pkgs.stdenv.isLinux true;
extraGroups = ["wheel"]; extraGroups = [ "wheel" ];
} }
else {} else
{ }
); );
} }

View file

@ -1,10 +1,8 @@
{ { lib, pkgs, ... }:
lib, let
pkgs,
...
}: let
inherit (lib) mkForce; inherit (lib) mkForce;
in { in
{
services = { services = {
kanata.enable = mkForce false; kanata.enable = mkForce false;
dnsmasq.enable = mkForce false; dnsmasq.enable = mkForce false;

View file

@ -1,9 +1,6 @@
{ config, pkgs, ... }:
{ {
config, imports = [ ./hardware.nix ];
pkgs,
...
}: {
imports = [./hardware.nix];
dotfiles.desktop = "sway"; dotfiles.desktop = "sway";
@ -30,7 +27,10 @@
virtualisation.podman.enable = true; virtualisation.podman.enable = true;
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
users.users."${config.dotfiles.username}".extraGroups = ["libvirtd" "transmission"]; users.users."${config.dotfiles.username}".extraGroups = [
"libvirtd"
"transmission"
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
cabextract cabextract
@ -56,8 +56,8 @@
enable = true; enable = true;
package = pkgs.steam.override { package = pkgs.steam.override {
extraEnv.MANGOHUD = 1; extraEnv.MANGOHUD = 1;
extraPkgs = p: extraPkgs =
with p; [ p: with p; [
corefonts corefonts
protontricks protontricks
gamescope gamescope

View file

@ -4,22 +4,33 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: { }:
imports = [ {
(modulesPath + "/installer/scan/not-detected.nix") imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
];
boot = { boot = {
initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "sd_mod"]; initrd.availableKernelModules = [
initrd.kernelModules = ["dm-snapshot"]; "nvme"
"xhci_pci"
"ahci"
"usbhid"
"sd_mod"
];
initrd.kernelModules = [ "dm-snapshot" ];
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_latest;
kernelModules = ["kvm-amd" "v4l2loopback"]; kernelModules = [
kernelParams = ["quiet" "splash"]; "kvm-amd"
"v4l2loopback"
];
kernelParams = [
"quiet"
"splash"
];
}; };
# Intel Arc A770 # Intel Arc A770
environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD"; environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD";
boot.extraModulePackages = [config.boot.kernelPackages.v4l2loopback]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;
driSupport32Bit = true; driSupport32Bit = true;

View file

@ -1,55 +1,59 @@
{ { inputs, overlays }:
inputs, rec {
overlays, hmCommonConfig =
}: rec { { username }:
hmCommonConfig = {username}: ({ (
config, { config, pkgs, ... }:
pkgs, let
... homeLib = import ../home/lib.nix { inherit inputs username pkgs; };
}: let in
homeLib = import ../home/lib.nix {inherit inputs username pkgs;}; {
in { config = {
config = { nixpkgs = {
nixpkgs = { overlays = overlays;
overlays = overlays; config.permittedInsecurePackages = [ ];
config.permittedInsecurePackages = []; };
}; home-manager = {
home-manager = { backupFileExtension = "backup";
backupFileExtension = "backup"; extraSpecialArgs = homeLib.extraSpecialArgs;
extraSpecialArgs = homeLib.extraSpecialArgs; sharedModules = homeLib.modules;
sharedModules = homeLib.modules; useGlobalPkgs = true;
useGlobalPkgs = true; useUserPackages = true;
useUserPackages = true; users.${username}.imports = [ ../home ];
users.${username}.imports = [../home]; };
}; };
}; }
}); );
mkSystem = { mkSystem =
host, {
system, host,
username, system,
isGraphical ? false, username,
extraModules ? [], isGraphical ? false,
}: let extraModules ? [ ],
ldTernary = l: d: }:
if pkgs.stdenv.isLinux let
then l ldTernary =
else if pkgs.stdenv.isDarwin l: d:
then d if pkgs.stdenv.isLinux then
else throw "Unsupported system"; l
target = ldTernary "nixosConfigurations" "darwinConfigurations"; else if pkgs.stdenv.isDarwin then
builder = with inputs; ldTernary nixpkgs.lib.nixosSystem darwin.lib.darwinSystem; d
module = ldTernary "nixosModules" "darwinModules"; else
hostPlatform = ldTernary "linux" "darwin"; throw "Unsupported system";
target = ldTernary "nixosConfigurations" "darwinConfigurations";
builder = with inputs; ldTernary nixpkgs.lib.nixosSystem darwin.lib.darwinSystem;
module = ldTernary "nixosModules" "darwinModules";
hostPlatform = ldTernary "linux" "darwin";
pkgs = inputs.nixpkgs.legacyPackages.${system}; pkgs = inputs.nixpkgs.legacyPackages.${system};
inherit (pkgs.lib) mkOption types; inherit (pkgs.lib) mkOption types;
in { in
${target}."${host}" = builder { {
inherit system; ${target}."${host}" = builder {
modules = inherit system;
[ modules = [
{ {
options = { options = {
dotfiles = { dotfiles = {
@ -59,7 +63,12 @@
description = "The username of the user"; description = "The username of the user";
}; };
desktop = mkOption { desktop = mkOption {
type = types.nullOr (types.enum ["gnome" "sway"]); type = types.nullOr (
types.enum [
"gnome"
"sway"
]
);
default = "sway"; default = "sway";
description = "The desktop environment to use"; description = "The desktop environment to use";
}; };
@ -77,12 +86,12 @@
./common/${hostPlatform} ./common/${hostPlatform}
./${host} ./${host}
inputs.home-manager.${module}.home-manager inputs.home-manager.${module}.home-manager
] ] ++ [ (hmCommonConfig { inherit username; }) ] ++ extraModules;
++ [(hmCommonConfig {inherit username;})] specialArgs = {
++ extraModules; inherit inputs;
specialArgs = {inherit inputs;}; };
};
}; };
};
mkSystems = systems: inputs.nixpkgs.lib.mkMerge (map mkSystem systems); mkSystems = systems: inputs.nixpkgs.lib.mkMerge (map mkSystem systems);
} }

View file

@ -1,4 +1,5 @@
{config, ...}: let { config, ... }:
let
noQuarantine = name: { noQuarantine = name: {
inherit name; inherit name;
args.no_quarantine = true; args.no_quarantine = true;
@ -7,9 +8,10 @@
inherit name; inherit name;
args.require_sha = false; args.require_sha = false;
}; };
in { in
{
# make brew available in PATH # make brew available in PATH
environment.systemPath = [config.homebrew.brewPrefix]; environment.systemPath = [ config.homebrew.brewPrefix ];
homebrew = { homebrew = {
enable = true; enable = true;
@ -50,6 +52,6 @@ in {
autoUpdate = true; autoUpdate = true;
upgrade = true; upgrade = true;
}; };
taps = ["homebrew/cask"]; taps = [ "homebrew/cask" ];
}; };
} }

View file

@ -1,5 +1,5 @@
{ {
imports = [./brew.nix]; imports = [ ./brew.nix ];
nix.settings.extra-platforms = [ nix.settings.extra-platforms = [
"aarch64-darwin" "aarch64-darwin"

View file

@ -1,5 +1,5 @@
{ {
imports = [../common/wsl]; imports = [ ../common/wsl ];
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
location = { location = {

View file

@ -7,15 +7,16 @@
symlinkJoin, symlinkJoin,
writeScriptBin, writeScriptBin,
# command line arguments which are always set e.g "--disable-gpu" # command line arguments which are always set e.g "--disable-gpu"
commandLineArgs ? [], commandLineArgs ? [ ],
}: let }:
let
name = "apple-music-via-google-chrome"; name = "apple-music-via-google-chrome";
meta = { meta = {
description = "Open Apple Music in Google Chrome app mode"; description = "Open Apple Music in Google Chrome app mode";
homepage = google-chrome.meta.homepage or null; homepage = google-chrome.meta.homepage or null;
license = lib.licenses.unfree; license = lib.licenses.unfree;
maintainers = [lib.maintainers.roberth]; maintainers = [ lib.maintainers.roberth ];
platforms = google-chrome.meta.platforms or lib.platforms.all; platforms = google-chrome.meta.platforms or lib.platforms.all;
}; };
@ -30,7 +31,7 @@
}; };
desktopName = "Apple Music via Google Chrome"; desktopName = "Apple Music via Google Chrome";
genericName = "Music streaming service"; genericName = "Music streaming service";
categories = ["AudioVideo"]; categories = [ "AudioVideo" ];
startupNotify = true; startupNotify = true;
}; };
@ -44,7 +45,10 @@
"$@" "$@"
''; '';
in in
symlinkJoin { symlinkJoin {
inherit name meta; inherit name meta;
paths = [script desktopItem]; paths = [
} script
desktopItem
];
}

View file

@ -1,28 +1,33 @@
{inputs}: [ { inputs }:
[
inputs.catppuccin-toolbox.overlays.default inputs.catppuccin-toolbox.overlays.default
inputs.catppuccin-vsc.overlays.default inputs.catppuccin-vsc.overlays.default
inputs.nix-vscode-extensions.overlays.default inputs.nix-vscode-extensions.overlays.default
(final: prev: let (
srcs = prev.callPackages ../_sources/generated.nix {}; final: prev:
in { let
inherit (inputs.swayfx.packages.${prev.system}) swayfx-unwrapped; srcs = prev.callPackages ../_sources/generated.nix { };
starship = prev.starship.overrideAttrs (old: { in
patches = [ {
(prev.fetchpatch { inherit (inputs.swayfx.packages.${prev.system}) swayfx-unwrapped;
url = "https://github.com/starship/starship/pull/4439.patch"; starship = prev.starship.overrideAttrs (old: {
sha256 = "sha256-BKH3elz96Oa424Oz5UIKA2/BOpkym1LTestvccFinnc="; patches = [
}) (prev.fetchpatch {
]; url = "https://github.com/starship/starship/pull/4439.patch";
}); sha256 = "sha256-BKH3elz96Oa424Oz5UIKA2/BOpkym1LTestvccFinnc=";
yabai = prev.yabai.overrideAttrs (_: { })
inherit (srcs.yabai) version src; ];
}); });
nur = import inputs.nur { yabai = prev.yabai.overrideAttrs (_: {
nurpkgs = prev; inherit (srcs.yabai) version src;
pkgs = prev; });
repoOverrides = { nur = import inputs.nur {
nekowinston = inputs.nekowinston-nur.packages.${prev.stdenv.system}; nurpkgs = prev;
pkgs = prev;
repoOverrides = {
nekowinston = inputs.nekowinston-nur.packages.${prev.stdenv.system};
};
}; };
}; }
}) )
] ]