style: format with nixfmt-rfc
This commit is contained in:
parent
3904ea1ce5
commit
2bfedcd162
51 changed files with 1248 additions and 1124 deletions
|
@ -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
135
flake.nix
|
@ -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 = {
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.foot = {
|
programs.foot = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 [
|
||||||
{
|
{
|
||||||
|
|
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
66
home/lib.nix
66
home/lib.nix
|
@ -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 ]
|
||||||
++ [./.];
|
++ [ ./. ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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;
|
||||||
|
|
13
home/xdg.nix
13
home/xdg.nix
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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";
|
];
|
||||||
}
|
};
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
virtualisation.podman = {
|
virtualisation.podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
{ }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
121
machines/lib.nix
121
machines/lib.nix
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
imports = [./brew.nix];
|
imports = [ ./brew.nix ];
|
||||||
|
|
||||||
nix.settings.extra-platforms = [
|
nix.settings.extra-platforms = [
|
||||||
"aarch64-darwin"
|
"aarch64-darwin"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
imports = [../common/wsl];
|
imports = [ ../common/wsl ];
|
||||||
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
location = {
|
location = {
|
||||||
|
|
|
@ -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
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -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};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
})
|
)
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue