Compare commits

..

1 Commits

Author SHA1 Message Date
Oystein Kristoffer Tveit fbbd625350
WIP: home/{hyprland,waybar}: init 2024-06-30 12:32:21 +02:00
31 changed files with 781 additions and 931 deletions

View File

@ -3,7 +3,6 @@ keys:
- &host_tsuki age1c92j4w0gqh32hwssl5m2mfrggssxax9pge8qxwytv9lmrnfttcvqdrgsst - &host_tsuki age1c92j4w0gqh32hwssl5m2mfrggssxax9pge8qxwytv9lmrnfttcvqdrgsst
- &host_kasei age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc - &host_kasei age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc
- &host_dosei age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c - &host_dosei age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c
- &home age10f4a5acpar8vwz3v298r3nv7gggfpmyh4wxpkc2hwq9paq0scf8qee8lau
creation_rules: creation_rules:
- path_regex: secrets/common.yaml - path_regex: secrets/common.yaml
@ -14,14 +13,6 @@ creation_rules:
- *host_tsuki - *host_tsuki
- *host_kasei - *host_kasei
- *host_dosei - *host_dosei
- *home
- path_regex: secrets/home.yaml
key_groups:
- pgp:
- *gpg_h7x4
age:
- *home
- path_regex: secrets/kasei.yaml - path_regex: secrets/kasei.yaml
key_groups: key_groups:

View File

@ -8,11 +8,21 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
home-manager-local = {
url = "git+file:///home/h7x4/git/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
dotfiles = { dotfiles = {
url = "git+https://git.pvv.ntnu.no/oysteikt/dotfiles?ref=master"; url = "git+https://git.pvv.ntnu.no/oysteikt/dotfiles?ref=master";
flake = false; flake = false;
}; };
fonts = {
url = "path:/home/h7x4/git/fonts";
flake = false;
};
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -66,8 +76,10 @@
nixpkgs, nixpkgs,
nixpkgs-unstable, nixpkgs-unstable,
home-manager, home-manager,
home-manager-local,
dotfiles, dotfiles,
fonts,
matrix-synapse-next, matrix-synapse-next,
maunium-stickerpicker, maunium-stickerpicker,
minecraft, minecraft,
@ -100,13 +112,6 @@
(self: super: { (self: super: {
inherit (nonrecursive-unstable-pkgs) atuin wstunnel; inherit (nonrecursive-unstable-pkgs) atuin wstunnel;
}) })
# https://github.com/NixOS/nixpkgs/pull/251706
(self: super: {
mozc = self.qt6Packages.callPackage ./package-overrides/mozc.nix { };
fcitx5-mozc = self.callPackage ./package-overrides/fcitx5-mozc.nix { };
})
(self: super: { (self: super: {
mpv-unwrapped = super.mpv-unwrapped.override { mpv-unwrapped = super.mpv-unwrapped.override {
ffmpeg = super.ffmpeg_6-full; ffmpeg = super.ffmpeg_6-full;
@ -190,6 +195,7 @@
inherit inputs; inherit inputs;
inherit (self) extendedLib; inherit (self) extendedLib;
inherit (config) machineVars; inherit (config) machineVars;
hostname = name;
secrets = secrets.outputs.settings; secrets = secrets.outputs.settings;
}; };
@ -197,10 +203,7 @@
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
]; ];
users.h7x4.imports = [ users.h7x4.imports = [ ./home/home.nix ];
./home/home.nix
./hosts/${name}/home
];
}; };
}) })
] ++ (extraConfig.modules or [ ]); ] ++ (extraConfig.modules or [ ]);
@ -217,6 +220,7 @@
modules = [ modules = [
matrix-synapse-next.nixosModules.default matrix-synapse-next.nixosModules.default
osuchan.outputs.nixosModules.default osuchan.outputs.nixosModules.default
sops-nix.nixosModules.sops
vscode-server.nixosModules.default vscode-server.nixosModules.default
maunium-stickerpicker.nixosModules.default maunium-stickerpicker.nixosModules.default

View File

@ -6,9 +6,10 @@
./pvv.nix ./pvv.nix
]; ];
sops.secrets."ssh/secret-config" = { sops.secrets."ssh/secret-config/home" = {
sopsFile = ../../../secrets/common.yaml;
mode = "0444"; mode = "0444";
}; };
programs.ssh.includes = [ config.sops.secrets."ssh/secret-config".path ]; programs.ssh.includes = [ config.sops.secrets."ssh/secret-config/home".path ];
} }

View File

@ -9,18 +9,6 @@
"github" = { "github" = {
user = "git"; user = "git";
hostname = "github.com"; hostname = "github.com";
identityFile = [ "~/.ssh/id_ed25519" ];
};
"github-nordicsemi" = {
user = "git";
hostname = "github.com";
identityFile = [ "~/.ssh/id_ed25519_nordicsemi" ];
};
"bitbucket-nordicsemi" = {
user = "git";
hostname = "bitbucket.nordicsemi.no";
port = 7999;
identityFile = [ "~/.ssh/id_ed25519_nordicsemi" ];
}; };
"gitlab.stud.idi.ntnu.no" = { "gitlab.stud.idi.ntnu.no" = {
user = "git"; user = "git";

View File

@ -88,14 +88,8 @@ let
machines: pipe machines pipeline; machines: pipe machines pipeline;
in in
{ {
programs.ssh.matchBlocks = (extendedLib.attrsets.concatAttrs [ programs.ssh.matchBlocks = extendedLib.attrsets.concatAttrs [
(convertMachinesWith convertNormalMachine normalMachines) (convertMachinesWith convertNormalMachine normalMachines)
(convertMachinesWith convertAdminMachine rootMachines) (convertMachinesWith convertAdminMachine rootMachines)
]) // { ];
"pvv-git git.pvv.ntnu.no" = {
hostname = "git.pvv.ntnu.no";
user = "gitea";
port = 2222;
};
};
} }

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, extendedLib, inputs, machineVars, ... } @ args: let { config, pkgs, lib, extendedLib, inputs, machineVars, hostname, ... } @ args: let
inherit (lib) mkForce mkIf optionals; inherit (lib) mkForce mkIf optionals;
graphics = !machineVars.headless; graphics = !machineVars.headless;
in { in {
@ -14,15 +14,13 @@ in {
./programs/direnv.nix ./programs/direnv.nix
./programs/gdb.nix ./programs/gdb.nix
./programs/gh.nix ./programs/gh.nix
./programs/git ./programs/git.nix
./programs/gpg.nix ./programs/gpg.nix
./programs/less.nix ./programs/less.nix
./programs/neovim.nix ./programs/neovim.nix
./programs/tmux.nix ./programs/tmux.nix
./programs/zsh ./programs/zsh
./services/git-maintenance.nix
./modules/colors.nix ./modules/colors.nix
./modules/shellAliases.nix ./modules/shellAliases.nix
] ++ optionals graphics [ ] ++ optionals graphics [
@ -31,6 +29,7 @@ in {
./programs/alacritty.nix ./programs/alacritty.nix
./programs/emacs ./programs/emacs
./programs/firefox.nix ./programs/firefox.nix
./programs/hyprland.nix
./programs/ncmpcpp.nix ./programs/ncmpcpp.nix
./programs/ncmpcpp.nix ./programs/ncmpcpp.nix
./programs/newsboat ./programs/newsboat
@ -38,6 +37,7 @@ in {
./programs/rofi.nix ./programs/rofi.nix
./programs/taskwarrior.nix ./programs/taskwarrior.nix
./programs/vscode.nix ./programs/vscode.nix
./programs/waybar.nix
# ./programs/xmobar # ./programs/xmobar
./programs/xmonad ./programs/xmonad
./programs/zathura.nix ./programs/zathura.nix
@ -45,16 +45,16 @@ in {
./services/dunst.nix ./services/dunst.nix
./services/fcitx5.nix ./services/fcitx5.nix
./services/mpd.nix ./services/mpd.nix
./services/picom.nix # ./services/picom.nix
./services/polybar.nix # ./services/polybar.nix
./services/screen-locker.nix # ./services/screen-locker.nix
# ./services/stalonetray.nix # ./services/stalonetray.nix
./services/sxhkd.nix # ./services/sxhkd.nix
./services/copyq.nix ./services/copyq.nix
]; ];
sops.defaultSopsFile = ../secrets/home.yaml; sops.defaultSopsFile = ./secrets/${hostname}.yaml;
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519_home_sops" ]; sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets."nix/access-tokens" = { sops.secrets."nix/access-tokens" = {
sopsFile = ../secrets/common.yaml; sopsFile = ../secrets/common.yaml;
@ -68,6 +68,7 @@ in {
}; };
home = { home = {
stateVersion = "22.05";
username = "h7x4"; username = "h7x4";
homeDirectory = "/home/h7x4"; homeDirectory = "/home/h7x4";

View File

@ -90,12 +90,12 @@
gnome.seahorse gnome.seahorse
google-chrome google-chrome
inkscape inkscape
insomnia # insomnia
iwgtk iwgtk
# keybase-gui # keybase-gui
kid3 kid3
koreader koreader
krita # krita
ktouch ktouch
libnotify libnotify
libreoffice libreoffice
@ -107,7 +107,7 @@
mopidy-youtube mopidy-youtube
mpc_cli mpc_cli
nyxt nyxt
obsidian # obsidian
# pcloud # pcloud
pwvucontrol pwvucontrol
# scrcpy # scrcpy
@ -116,7 +116,7 @@
# sublime3 # sublime3
# swiPrologWithGui # swiPrologWithGui
sxiv sxiv
tagainijisho # tagainijisho
tenacity tenacity
thunderbird thunderbird

106
home/programs/git.nix Normal file
View File

@ -0,0 +1,106 @@
{ pkgs, ... }:
{
programs.git = {
enable = true;
package = pkgs.gitFull;
userName = "h7x4";
userEmail = "h7x4@nani.wtf";
signing = {
key = "46B9228E814A2AAC";
signByDefault = true;
};
lfs.enable = true;
delta = {
enable = true;
options = {
line-numbers = true;
side-by-side = true;
theme = "Monokai Extended Origin";
};
};
aliases = {
aliases = "!git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g'";
delete-merged = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d";
graph = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
graphv = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all";
forcepush = "push --force-with-lease --force-if-includes";
authors = "shortlog --summary --numbered --email";
switch-interactive = "!cat <(git branch) <(git branch -r) | grep -v '^\\*\\|HEAD ->' | ${pkgs.fzf}/bin/fzf --reverse --info=inline --preview 'echo {} | xargs git show --color' | sed 's|\\s*.*/||' | xargs git switch";
si = "switch-interactive";
rebase-author = "rebase -i -x \"git commit --amend --reset-author -CHEAD\"";
};
extraConfig = {
core = {
whitespace = "space-before-tab,-indent-with-non-tab,trailing-space";
untrackedCache = true;
editor = "nvim";
};
rerere.enabled = true;
branch.sort = "-committerdate";
"color \"branch\"".upstream = "cyan";
color.ui = "auto";
init.defaultBranch = "main";
fetch.prune = true;
pull.rebase = true;
push = {
default = "current";
autoSetupRemote = true;
followTags = true;
};
merge = {
tool = "nvimdiff";
conflictstyle = "diff3";
colorMoved = "zebra";
};
mergetool.keepBackup = false;
"mergetool \"nvimdiff\"".cmd = "nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'";
diff = {
mnemonicPrefix = true;
renames = true;
tool = "nvimdiff";
};
grep = {
break = true;
heading= true;
lineNumber = true;
extendedRegexp = true;
};
github.user = "h7x4";
"url \"github:\"".insteadOf = "https://github.com/";
web.browser = "google-chrome-stable";
"filter \"lfs\"" = {
required = true;
smudge = "git-lfs smudge -- %f";
process = "git-lfs filter-process";
clean = "git-lfs clean -- %f";
};
};
ignores = [
".vscode"
".direnv"
".envrc"
"shell.nix"
];
};
}

View File

@ -1,240 +0,0 @@
{ config, pkgs, lib, ... }:
let
cfg = config.programs.git;
github-uri-prefixes = [
# Preferred
"github:"
# Alternative
"https://github.com/"
"ssh://git@github.com:"
"git@github.com:"
"github.com:"
];
in
{
# TODO: convert to template once nix-sops supports it in hm module
sops.secrets."git/nordicsemi-config" = { };
programs.git = lib.mkMerge [
{
enable = true;
package = pkgs.gitFull;
userName = "h7x4";
userEmail = "h7x4@nani.wtf";
signing = {
key = "46B9228E814A2AAC";
signByDefault = true;
};
lfs.enable = true;
delta = {
enable = true;
options = {
line-numbers = true;
side-by-side = true;
theme = "Monokai Extended Origin";
};
};
aliases = {
aliases = "!git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g'";
delete-merged = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d";
graph = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
graphv = "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all";
forcepush = "push --force-with-lease --force-if-includes";
authors = "shortlog --summary --numbered --email";
si = "switch-interactive";
rebase-author = "rebase -i -x \"git commit --amend --reset-author -CHEAD\"";
};
extraConfig = {
core = {
whitespace = "space-before-tab,-indent-with-non-tab,trailing-space";
untrackedCache = true;
editor = "nvim";
};
safe.directory = "*";
rerere.enabled = true;
branch.sort = "-committerdate";
"color \"branch\"".upstream = "cyan";
color.ui = "auto";
init.defaultBranch = "main";
fetch = {
prune = true;
fsckObjects = true;
};
transfer.fsckObjects = true;
receive.fsckObjects = true;
pull.rebase = true;
rebase = {
autoStash = true;
autoSquash = true;
abbreviateCommands = true;
updateRefs = true;
};
push = {
default = "current";
autoSetupRemote = true;
followTags = true;
};
merge = {
tool = "nvimdiff";
conflictstyle = "diff3";
colorMoved = "zebra";
};
mergetool.keepBackup = false;
"mergetool \"nvimdiff\"".cmd = "nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'";
diff = {
mnemonicPrefix = true;
renames = true;
tool = "nvimdiff";
submodule = "log";
};
status = {
showUntrackedFiles = "all";
relativePaths = true;
submoduleSummary = true;
};
log.date = "iso";
submodule.recurse = true;
grep = {
break = true;
heading= true;
lineNumber = true;
extendedRegexp = true;
};
# Run autocorrected command after 3 seconds
help.autocorrect = "30";
github.user = "h7x4";
"url \"${lib.head github-uri-prefixes}\"".insteadOf = lib.tail github-uri-prefixes;
web.browser = "google-chrome-stable";
"filter \"lfs\"" = {
required = true;
smudge = "git-lfs smudge -- %f";
process = "git-lfs filter-process";
clean = "git-lfs clean -- %f";
};
};
ignores = [
".vscode"
".direnv"
".envrc"
"shell.nix"
];
}
(let
uri-prefixes = [
# Preferred
"pvv-git:"
# Alternative
"https://git.pvv.org/"
"ssh://gitea@git.pvv.ntnu.no:2222/"
"gitea@git.pvv.ntnu.no:2222/"
"gitea@git.pvv.ntnu.no:"
"git.pvv.ntnu.no:"
];
prefixes-per-org = let
organizations = [
"Drift"
"Projects"
];
in lib.genAttrs organizations (org: map (uri-prefix: "${uri-prefix}${org}") uri-prefixes);
in {
extraConfig."url \"${lib.head uri-prefixes}\"".insteadOf = lib.tail uri-prefixes;
includes = map (x: {
contentSuffix = "pvv.gitconfig";
condition = "hasconfig:remote.*.url:${x}**";
contents = {
user = {
email = "oysteikt@pvv.ntnu.no";
name = "Øystein Tveit";
};
};
}) (lib.flatten (lib.attrValues prefixes-per-org));
})
(let
bitbucket-uri-prefixes = [
# Preferred
"bitbucket-nordicsemi:"
# Alternative
"ssh://git@bitbucket.nordicsemi.no:7999"
"https://projecttools.nordicsemi.no/bitbucket/scm"
];
prefixes-per-org = let
organizations = [
"NordicSemiconductor"
"NordicPlayground"
"nrfconnect"
];
in lib.genAttrs organizations (org: map (uri-prefix: "${uri-prefix}${org}") github-uri-prefixes);
in {
extraConfig = lib.mergeAttrs
{
"url \"${lib.head bitbucket-uri-prefixes}\"".insteadOf = lib.tail bitbucket-uri-prefixes;
}
(lib.mapAttrs' (org: uri-prefixes: {
name = "url \"github-nordicsemi:${org}\"";
value.insteadOf = uri-prefixes;
}) prefixes-per-org)
;
includes = map (x: {
contentSuffix = "nordicsemi.gitconfig";
condition = "hasconfig:remote.*.url:${x}/**";
path = config.sops.secrets."git/nordicsemi-config".path;
}) (bitbucket-uri-prefixes ++ (lib.flatten (lib.attrValues prefixes-per-org)));
})
];
home.packages = [
(pkgs.writeShellApplication {
name = "git-tcommit";
runtimeInputs = with pkgs; [ cfg.package coreutils ];
text = lib.fileContents ./scripts/git-tcommit.sh;
})
(pkgs.writeShellApplication {
name = "git-switch-interactive";
runtimeInputs = with pkgs; [ cfg.package fzf gnused coreutils ];
text = lib.fileContents ./scripts/git-switch-interactive.sh;
excludeShellChecks = [
"SC2001" # (style): See if you can use ${variable//search/replace} instead. (sed invocation)
];
})
];
}

View File

@ -1,11 +0,0 @@
set -euo pipefail
if [ -n "${1:-}" ]; then
git switch "$1"
exit 0
fi
BRANCHES=$(cat <(git branch) <(git branch --remotes) | grep --invert-match '^\*\|HEAD ->' | sed 's|^\s*||')
CHOSEN_BRANCH=$(fzf --reverse --info=inline --preview 'git show --color {}' <<<"$BRANCHES")
CLEAN_BRANCH_NAME=$(sed 's|^\s*.*/||' <<<"$CHOSEN_BRANCH")
git switch "$CLEAN_BRANCH_NAME"

View File

@ -1,31 +0,0 @@
set -euo pipefail
HOUR_SHIFT="$1"
shift
if [[ $HOUR_SHIFT == -* ]]; then
HOUR_SHIFT="${HOUR_SHIFT#*-}"
OPERATOR="-"
else
OPERATOR="+"
fi
DATE=$(date -d "now ${OPERATOR} ${HOUR_SHIFT} hours")
while true; do
echo "Commiting with date: ${DATE} (${OPERATOR}${HOUR_SHIFT}h)"
read -rp "Do you want to proceed? (y/n) " yn
case $yn in
[yY] )
break;;
[nN] )
exit;;
* ) echo invalid response;;
esac
done
export GIT_COMMITTER_DATE="${DATE}"
export GIT_AUTHOR_DATE="${DATE}"
git commit "$@"

273
home/programs/hyprland.nix Normal file
View File

@ -0,0 +1,273 @@
{ config, pkgs, lib, ... }:
let
cfg = config.wayland.windowManager.hyprland;
in
{
home.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
WLR_RENDERER_ALLOW_SOFTWARE = "1";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
GDK_BACKEND = "wayland,x11,*";
QT_QPA_PLATFORM = "wayland;xcb";
NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
SDL_VIDEODRIVER = "wayland";
OZONE_PLATFORM = "wayland";
CLUTTER_BACKEND = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
# QT_QPA_PLATFORMTHEME = "qt6ct";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
};
wayland.windowManager.hyprland = {
enable = true;
settings = let
scratchpads = [
(rec {
title = "Floating terminal";
class = "floatingTerminal";
command = "alacritty --class ${class} -e tmux new-session -A -s f";
size = { h = 90; w = 95; };
keys = [
"$mod, RETURN"
"$mod, SPACE"
];
})
(rec {
title = "Ncmpcpp";
class = "floatingNcmpcpp";
command = "alacritty --class ${class} -e ncmpcpp";
size = { h = 95; w = 95; };
keys = [ "$mod, Q" ];
})
# "$mod, W, emacs"
# "$mod, E, filebrowser"
# "$mod, X, taskwarriortui"
];
in {
"$mod" = "SUPER";
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
bind = [
"$mod SHIFT, Q, exit"
"$mod, R, exec, ${pkgs.rofi}/bin/rofi -show drun"
"$mod, T, togglefloating"
"$mod, F, fakefullscreen"
"$mod, C, exec, hyprctl reload"
"$mod, BACKSPACE, exec, ${lib.getExe (pkgs.writeShellApplication {
name = "hyprland-kill-windows-except-scratchpads";
runtimeInputs = [ cfg.package pkgs.jq ];
text = ''
ACTIVE_WINDOW_CLASS=$(hyprctl activewindow -j | jq -r '.class')
case "$ACTIVE_WINDOW_CLASS" in
${lib.pipe scratchpads [
(map ({ class , ... }: ''
'${class}')
hyprctl dispatch togglespecialworkspace '${class}Ws'
;;
''))
(map (lib.splitString "\n"))
(lib.flatten)
(map (x: " " + x))
(lib.concatStringsSep "\n")
]}
*)
hyprctl dispatch killactive
;;
esac
'';
})}"
"$mod SHIFT, RETURN, exec, alacritty --class termTerminal -e tmux new-session -A -s term"
"$mod SHIFT, SPACE, exec, alacritty --class termTerminal -e tmux new-session -A -s term"
"$mod, j, layoutmsg,cyclenext"
"$mod, k, layoutmsg,cycleprev"
"$mod SHIFT, j, layoutmsg, swapnext"
"$mod SHIFT, k, layoutmsg, swapprev"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod SHIFT, 1, movetoworkspace, 1"
"$mod SHIFT, 2, movetoworkspace, 2"
"$mod SHIFT, 3, movetoworkspace, 3"
"$mod SHIFT, 4, movetoworkspace, 4"
"$mod SHIFT, 5, movetoworkspace, 5"
"$mod SHIFT, 6, movetoworkspace, 6"
"$mod SHIFT, 7, movetoworkspace, 7"
"$mod SHIFT, 8, movetoworkspace, 8"
"$mod SHIFT, 9, movetoworkspace, 9"
# TODO: ensure this exists in env
",XF86MonBrightnessUp, exec, brightnessctl s +5%"
",XF86MonBrightnessDown, exec, brightnessctl s 5%-"
# TODO: swap out for wireplumber commands
",XF86AudioLowerVolume, exec, ${pkgs.alsaUtils}/bin/amixer set Master 2%-"
",XF86AudioRaiseVolume, exec, ${pkgs.alsaUtils}/bin/amixer set Master 2%+"
"$mod ,F7, exec, ${pkgs.alsaUtils}/bin/amixer set Master 2%-"
"$mod ,F8, exec, ${pkgs.alsaUtils}/bin/amixer set Master 2%+"
"$mod, p, exec, ${pkgs.mpc_cli}/bin/mpc toggle"
",XF86AudioPlay, exec, ${pkgs.mpc_cli}/bin/mpc toggle"
",XF86AudioPrev, exec, ${pkgs.mpc_cli}/bin/mpc prev"
",XF86AudioNext, exec, ${pkgs.mpc_cli}/bin/mpc next"
"$mod, b, exec, ${pkgs.fcitx5}/bin/fcitx5-remote -s mozc"
"$mod, n, exec, ${pkgs.fcitx5}/bin/fcitx5-remote -s keyboard-no"
"$mod, m, exec, ${pkgs.fcitx5}/bin/fcitx5-remote -s keyboard-us"
# TODO: ensure exists in environment
"$mod, l, exec, loginctl lock-session"
# TODO: fix
# "super + minus" = "${pkgs.xcalib}/bin/xcalib -invert -alter"
# TODO: fix
# "@Print" = "${pkgs.maim}/bin/maim --hidecursor --nokeyboard --select | ${pkgs.xclip}/bin/xclip -selection clipboard -target image/png -in"
# "shift + @Print" = "${pkgs.maim}/bin/maim --hidecursor --nokeyboard $SCREENSHOT_DIR/$(date +%s).png"
# TODO: Add boomer as package
# "super + @Print" = "boomer"
]
++
(lib.pipe scratchpads [
(map ({ keys, command, class, ... }:
(map (key: let
# TODO: rewrite the scratchpad logic to move windows back and forth
# from the special workspaces, rather than overlay the workspaces.
#
# TODO: don't invoke the program upon close toggling the scratchpad
#
# TODO: ensure program becomes in focus upon open toggling the scratchpad
invokeIfNotRunningAndToggleWorkspace = pkgs.writeShellApplication {
name = "hyprland-toggle-scratchpad-${class}";
runtimeInputs = [ cfg.package pkgs.jq ];
text = ''
SCRATCHPAD_EXISTS=$(hyprctl clients -j | jq -r '[.[].class]|any(. == "${class}")')
if [ "$SCRATCHPAD_EXISTS" != "true" ]; then
${command} &
fi
hyprctl dispatch togglespecialworkspace '${class}Ws'
'';
};
in "${key}, exec, ${lib.getExe invokeIfNotRunningAndToggleWorkspace}"
) keys)
))
lib.flatten
]);
windowrulev2 = [
"float,class:(Rofi)"
"workspace 2,class:(firefox)"
"workspace 2,class:(google-chrome)"
"workspace 3,class:(Emacs)"
"workspace 3,class:(Code)"
"workspace 3,class:(code-url-handler)"
"workspace 5,class:(discord)"
"workspace 5,class:(Element)"
]
++
(lib.pipe scratchpads [
(map ({ class, size, ... }: [
"workspace special:${class}Ws, class:^${class}$"
"float, class:^${class}$"
"size ${toString size.w}% ${toString size.h}%, class:^${class}$"
"move ${toString ((100 - size.w) / 2)}% ${toString ((100 - size.h) / 2)}%, class:^${class}$"
]))
lib.flatten
]);
monitor = [
"DP-6, 1920x1080@144.00Hz, 0x0, 1"
"DVI-D-1, 1920x1080@144.00Hz, 1920x0, 1"
",preferred,auto,1"
];
general = {
gaps_in = 5;
gaps_out = 15;
border_size = 2;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
resize_on_border = false;
allow_tearing = false;
layout = "master";
};
decoration = {
rounding = 10;
# Change transparency of focused and unfocused windows
active_opacity = 1.0;
inactive_opacity = 1.0;
drop_shadow = true;
shadow_range = 4;
shadow_render_power = 3;
"col.shadow" = "rgba(1a1a1aee)";
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
animations.enabled = false;
master = {
new_is_master = false;
};
misc = {
force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
};
input ={
kb_layout = "us";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
follow_mouse = 1;
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
touchpad = {
natural_scroll = false;
};
};
};
};
}

230
home/programs/waybar.nix Normal file
View File

@ -0,0 +1,230 @@
{ config, pkgs, lib, ... }:
let
cfg = config.programs.waybar;
cfgs = cfg.settings.mainBar;
in
{
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
# TODO: configure this per machine
output = [ "DP-6" ];
modules-left = [ "hyprland/workspaces" ];
modules-center = [ "clock" ];
modules-right = [ "mpd" "cpu" "memory" "wireplumber" "pulseaudio/slider" "tray" ];
"hyprland/workspaces" = {
all-outputs = true;
disable-scroll = true;
persistent-workspaces = {
${lib.head cfgs.output} = [ 1 2 3 4 5 6 7 8 ];
};
};
"mpd" = {
format = "{filename}";
};
"memory" = {
format = "{used}/{total}Gb";
};
"pulseaudio/slider" = {
orientation = "horizontal";
};
"tray" = {
icon-size = 20;
spacing = 8;
};
};
};
style = let
c = config.colors.defaultColorSet;
in ''
* {
font-family: FiraCode, FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 13px;
}
window#waybar {
background-color: ${c.background};
color: ${c.foreground};
}
#pulseaudio-slider trough {
min-height: 10px;
min-width: 100px;
}
/**** DEFAULT ****/
window#waybar.hidden {
opacity: 0.2;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.empty {
color: ${c.yellow};
}
#workspaces button {
padding: 0 5px;
color: ${c.magenta};
background-color: transparent;
}
#workspaces button.visible {
color: ${c.green};
}
#workspaces button.urgent {
background-color: ${c.red};
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: ${c.foreground};
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
background-color: #64727D;
}
#cpu {
background-color: ${c.cyan};
color: #000000;
}
#memory {
background-color: ${c.yellow};
color: #000000;
}
#network {
background-color: #2980b9;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio {
background-color: #f1c40f;
color: #000000;
}
#pulseaudio.muted {
background-color: #90b1b1;
color: #2a5c45;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#tray {
background-color: #2980b9;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
'';
# background-color: rgba(0,0,0,0);
# border-bottom: 3px solid rgba(100, 114, 125, 0.5);
#style = ''
#'';
};
}

View File

@ -1,21 +1,5 @@
{ pkgs, lib, config, ... }: { pkgs, lib, config, ... }:
let
cfg = config.programs.zsh;
in
{ {
home.file."${cfg.dotDir}/.zshrc".onChange = ''
${lib.getExe (pkgs.writeTextFile {
name = "zsh-compinit-oneshot.zsh";
executable = true;
destination = "/bin/zsh-compinit-oneshot.zsh";
text = ''
#!${lib.getExe cfg.package}
autoload -Uz compinit && compinit -C -d "${config.xdg.cacheHome}/zsh/zcompdump-$ZSH_VERSION"
'';
})}
'';
programs.zsh = { programs.zsh = {
enable = true; enable = true;
@ -28,7 +12,10 @@ in
fpath+=(${pkgs.zsh-completions}/share/zsh/site-functions) fpath+=(${pkgs.zsh-completions}/share/zsh/site-functions)
''; '';
completionInit = ""; # TODO: Regenerate zcompdump with a systemd timer
completionInit = ''
autoload -Uz compinit && compinit -C -d "${config.xdg.cacheHome}/zsh/zcompdump-$ZSH_VERSION"
'';
history = { history = {
extended = true; extended = true;

View File

@ -13,9 +13,9 @@
class = "Dunst"; class = "Dunst";
browser = "${pkgs.xdg-utils}/bin/xdg-open"; browser = "${pkgs.xdg-utils}/bin/xdg-open";
offset = let # offset = let
status-bar-height = config.services.polybar.settings."bar/top".height; # status-bar-height = config.services.polybar.settings."bar/top".height;
in "15x${toString (status-bar-height + 10)}"; # in "15x${toString (status-bar-height + 10)}";
corner_radius = 0; corner_radius = 0;
font = "Droid Sans 9"; font = "Droid Sans 9";

View File

@ -1,77 +0,0 @@
{ config, pkgs, lib, ... }:
{
systemd.user.services."git-maintenance@" = {
Unit = {
Description = "Optimize Git repositories data";
Documentation = [ "man:git-maintenance(1)" ];
};
Service = {
Type = "oneshot";
ExecStart = "${lib.getExe pkgs.git} for-each-repo --config=maintenance.repo maintenance run --schedule=%i";
LockPersonality = "yes";
MemoryDenyWriteExecute = "yes";
NoNewPrivileges = "yes";
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
"AF_VSOCK"
];
RestrictNamespaces = "yes";
RestrictRealtime = "yes";
RestrictSUIDSGID = "yes";
SystemCallArchitectures = "native";
SystemCallFilter = "@system-service";
};
};
systemd.user.timers."git-maintenance@hourly" = {
Unit = {
Description = "Optimize Git repositories data";
Documentation = [ "man:git-maintenance(1)" ];
};
Timer = {
OnCalendar = "*-*-* 1..23:05:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
systemd.user.timers."git-maintenance@daily" = {
Unit = {
Description = "Optimize Git repositories data";
Documentation = [ "man:git-maintenance(1)" ];
};
Timer = {
OnCalendar = "Tue..Sun *-*-* 0:05:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
systemd.user.timers."git-maintenance@weekly" = {
Unit = {
Description = "Optimize Git repositories data";
Documentation = [ "man:git-maintenance(1)" ];
};
Timer = {
OnCalendar = "Mon 0:05:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}

View File

@ -13,7 +13,7 @@ in {
sops.secrets = { sops.secrets = {
"nix/access-tokens" = { sopsFile = ./../../secrets/common.yaml; }; "nix/access-tokens" = { sopsFile = ./../../secrets/common.yaml; };
"ssh/secret-config" = { "ssh/secret-config/global" = {
sopsFile = ./../../secrets/common.yaml; sopsFile = ./../../secrets/common.yaml;
mode = "0444"; mode = "0444";
}; };
@ -64,7 +64,7 @@ in {
programs.ssh = { programs.ssh = {
extraConfig = '' extraConfig = ''
Include ${config.sops.secrets."ssh/secret-config".path} Include ${config.sops.secrets."ssh/secret-config/global".path}
''; '';
knownHosts = { knownHosts = {
@ -167,13 +167,14 @@ in {
enableDefaultPackages = true; enableDefaultPackages = true;
packages = with pkgs; [ packages = with pkgs; [
ark-pixel-font
cm_unicode cm_unicode
corefonts
dejavu_fonts dejavu_fonts
fira-code fira-code
fira-code-symbols fira-code-symbols
powerline-fonts
iosevka iosevka
symbola
corefonts
ipaexfont ipaexfont
ipafont ipafont
liberation_ttf liberation_ttf
@ -184,15 +185,12 @@ in {
noto-fonts-emoji noto-fonts-emoji
ocr-a ocr-a
open-sans open-sans
powerline-fonts
source-han-sans source-han-sans
source-sans source-sans
symbola
texlivePackages.asana-math
ubuntu_font_family ubuntu_font_family
victor-mono victor-mono
yasashisa-gothic
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" ]; }) (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" ]; })
inputs.fonts
]; ];
fontconfig = { fontconfig = {
@ -267,7 +265,14 @@ in {
touchpad.disableWhileTyping = true; touchpad.disableWhileTyping = true;
}; };
displayManager.defaultSession = "none+xmonad"; displayManager = {
enable = true;
defaultSession = "none+xmonad";
sddm = {
enable = !config.machineVars.headless;
wayland.enable = true;
};
};
xserver = { xserver = {
enable = !config.machineVars.headless; enable = !config.machineVars.headless;
@ -277,12 +282,12 @@ in {
options = "caps:escape"; options = "caps:escape";
}; };
desktopManager = { # desktopManager = {
xterm.enable = false; # xterm.enable = false;
xfce.enable = !config.machineVars.headless; # xfce.enable = !config.machineVars.headless;
}; # };
displayManager.lightdm.enable = !config.machineVars.headless; # displayManager.lightdm.enable = !config.machineVars.headless;
windowManager.xmonad = { windowManager.xmonad = {
enable = true; enable = true;
@ -292,9 +297,7 @@ in {
dbus dbus
]; ];
}; };
}; };
}; };
programs = { programs = {
@ -303,6 +306,8 @@ in {
tmux.enable = true; tmux.enable = true;
zsh.enable = true; zsh.enable = true;
hyprland.enable = true;
gnupg.agent.enable = true; gnupg.agent.enable = true;
gnupg.agent.pinentryPackage = pkgs.pinentry-curses; gnupg.agent.pinentryPackage = pkgs.pinentry-curses;

View File

@ -1,4 +0,0 @@
{ ... }:
{
home.stateVersion = "24.05";
}

View File

@ -73,7 +73,7 @@
services = { services = {
openssh = { openssh = {
enable = true; enable = true;
settings.X11Forwarding = true; # settings.X11Forwarding = true;
}; };
xserver.videoDrivers = [ "nvidia" ]; xserver.videoDrivers = [ "nvidia" ];
tailscale.enable = true; tailscale.enable = true;
@ -97,7 +97,7 @@
kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
blacklistedKernelModules = [ "nouveau" ]; blacklistedKernelModules = [ "nouveau" ];
kernelParams = [ "nomodeset" ]; # kernelParams = [ "nomodeset" ];
supportedFilesystems = [ "zfs" ]; supportedFilesystems = [ "zfs" ];
loader = { loader = {
@ -150,6 +150,9 @@
nvidia = { nvidia = {
modesetting.enable = true; modesetting.enable = true;
nvidiaSettings = true; nvidiaSettings = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
}; };
}; };
} }

View File

@ -1,12 +0,0 @@
{ config, ... }:
{
home.stateVersion = "24.05";
programs.git.extraConfig.maintenance.repo = let
home = config.home.homeDirectory;
in [
"${home}/nix"
"${home}/nixpkgs"
"${home}/pvv/nix"
];
}

View File

@ -1,4 +0,0 @@
{ ... }:
{
home.stateVersion = "24.05";
}

View File

@ -0,0 +1,66 @@
{ pkgs, config, secrets, ... }:
# TODO: This kinda sucks, but nextcloud refuses to use the NFS mounted
# drive, as it is not able to lock it properly.
# I'll wait for a while with enabling this service, until I have gotten
# Some proper disks into the server.
{
sops.secrets."nextcloud/initialPassword" = {
restartUnits = [ "nextcloud.service" ];
owner = "nextcloud";
group = "nextcloud";
};
sops.secrets."postgres/nextcloud" = {
restartUnits = [ "nextcloud.service" ];
owner = "nextcloud";
group = "nextcloud";
};
services.nextcloud = {
enable = false;
hostName = "cloud.nani.wtf";
https = true;
maxUploadSize = "10G";
package = pkgs.nextcloud25;
datadir = "${config.machineVars.dataDrives.default}/var/nextcloud";
home = "${config.machineVars.dataDrives.default}/var/nextcloud";
enableBrokenCiphersForSSE = false;
caching.redis = true;
extraOptions = {
redis = {
host = config.services.redis.servers.nextcloud.unixSocket;
port = 0;
dbindex = 0;
timeout = 1.5;
};
};
config = {
defaultPhoneRegion = "NO";
dbtype = "pgsql";
dbport = secrets.ports.postgres;
dbpassFile = config.sops.secrets."postgres/nextcloud".path;
adminuser = "h7x4";
adminpassFile = config.sops.secrets."nextcloud/initialPassword".path;
};
};
services.redis.servers.nextcloud = {
enable = true;
};
services.postgresql = {
enable = true;
ensureDatabases = [ "nextcloud" ];
ensureUsers = [{
name = "nextcloud";
ensureDBOwnership = true;
}];
};
}

View File

@ -152,6 +152,9 @@
locations."/_synapse".proxyPass = "http://$synapse_backend"; locations."/_synapse".proxyPass = "http://$synapse_backend";
}) })
(host ["madmin"] { root = "${pkgs.synapse-admin}/"; }) (host ["madmin"] { root = "${pkgs.synapse-admin}/"; })
# This one gets properly configured by the nextcloud module itself.
# It just needs the cloudflare and SSL settings.
(host ["cloud"] {})
# (host ["cache"] { root = "/var/lib/nix-cache"; }) # (host ["cache"] { root = "/var/lib/nix-cache"; })
# (proxy ["slack-bot"] "http://localhost:9898" {}) # (proxy ["slack-bot"] "http://localhost:9898" {})
(proxy ["atuin"] "http://atuin" {}) (proxy ["atuin"] "http://atuin" {})

View File

@ -1,131 +0,0 @@
{ bazel
, buildBazelPackage
, fcitx5
, fetchFromGitHub
, gettext
, lib
, mozc
, nixosTests
, pkg-config
, python3
, unzip
}:
buildBazelPackage {
pname = "fcitx5-mozc";
version = "unstable-2024-02-09";
src = fetchFromGitHub {
owner = "fcitx";
repo = "mozc";
fetchSubmodules = true;
rev = "c687b82fccd443917359a5c2a7b9b1c5fd3737c9";
hash = "sha256-lXEW7F7ctI7kNdKEjdeYHbyeF8hf6C5AohoWVIfDbjM=";
};
sourceRoot = "source/src";
nativeBuildInputs = [
gettext
pkg-config
python3
unzip
];
buildInputs = [
mozc
fcitx5
];
postPatch = ''
sed -i -e 's|^\(LINUX_MOZC_SERVER_DIR = \).\+|\1"${mozc}/lib/mozc"|' config.bzl
'';
inherit bazel;
removeRulesCC = false;
dontAddBazelOpts = true;
bazelFlags = [
"--config"
"oss_linux"
"--compilation_mode"
"opt"
];
bazelTargets = [
"unix/fcitx5:fcitx5-mozc.so"
"unix/icons"
];
fetchAttrs = {
preInstall = ''
rm -rf $bazelOut/external/fcitx5
'';
sha256 = "sha256-OrS5/3Zasd2WXsA+kg0pzvgaKZs7DG/aKfqekxCmAL8=";
};
buildAttrs = {
installPhase = ''
runHook preInstall
install -Dm444 ../LICENSE $out/share/licenses/fcitx5-mozc/LICENSE
install -Dm444 data/installer/credits_en.html $out/share/licenses/fcitx5-mozc/Submodules
install -Dm555 bazel-bin/unix/fcitx5/fcitx5-mozc.so $out/lib/fcitx5/fcitx5-mozc.so
install -Dm444 unix/fcitx5/mozc-addon.conf $out/share/fcitx5/addon/mozc.conf
install -Dm444 unix/fcitx5/mozc.conf $out/share/fcitx5/inputmethod/mozc.conf
for pofile in unix/fcitx5/po/*.po; do
filename=$(basename $pofile)
lang=''${filename/.po/}
mofile=''${pofile/.po/.mo}
msgfmt $pofile -o $mofile
install -Dm444 $mofile $out/share/locale/$lang/LC_MESSAGES/fcitx5-mozc.mo
done
msgfmt --xml -d unix/fcitx5/po/ --template unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml.in -o unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml
install -Dm444 unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml $out/share/metainfo/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml
cd bazel-bin/unix
unzip -o icons.zip
# These are relative symlinks, they will always resolve to files within $out
install -Dm444 mozc.png $out/share/icons/hicolor/128x128/apps/org.fcitx.Fcitx5.fcitx-mozc.png
ln -s org.fcitx.Fcitx5.fcitx-mozc.png $out/share/icons/hicolor/128x128/apps/fcitx-mozc.png
rm {mozc,dictionary,properties,tool}.svg
for svg in *.svg outlined/*.svg; do
name=$(basename -- ''${svg//_/-})
path=$out/share/icons/hicolor/scalable/apps
prefix=org.fcitx.Fcitx5.fcitx-mozc
install -Dm444 $svg $path/$prefix-$name
ln -s $prefix-$name $path/fcitx-mozc-$name
done
runHook postInstall
'';
};
passthru.tests = {
inherit (nixosTests) fcitx5;
};
meta = with lib; {
description = "Mozc - a Japanese Input Method Editor designed for multi-platform";
homepage = "https://github.com/fcitx/mozc";
license = with licenses; [
asl20 # abseil-cpp
bsd3 # mozc, breakpad, gtest, gyp, japanese-usage-dictionary, protobuf
mit # wil
# naist-2003 # IPAdic
publicDomain # src/data/test/stress_test, Okinawa dictionary
# unicode-30 # src/data/unicode, breakpad
];
maintainers = with maintainers; [ berberman govanify ];
platforms = platforms.linux;
};
}

View File

@ -1,241 +0,0 @@
{ bazel
, buildBazelPackage
, fetchFromGitHub
, fetchurl
, glibcLocales
, lib
, pkg-config
, python3
, qtbase
, qtwayland
, ruby
, wrapQtAppsHook
, dictionaries ? [
"alt-cannadic"
"edict2"
"jawiki"
"neologd"
"personal-names"
"place-names"
"skk-jisyo"
"sudachidict"
]
}:
buildBazelPackage {
pname = "mozc";
version = "unstable-2024-02-09";
srcs = [
(fetchFromGitHub rec {
owner = "google";
repo = "mozc";
name = repo;
fetchSubmodules = true;
rev = "c2fcbf6515c5884437977de46187c16a8cb7bb50";
hash = "sha256-AcIN5sWPBe4JotAUYv1fytgQw+mJzdFhKuVPLR48soA=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "merge-ut-dictionaries";
name = repo;
rev = "a3d6fc4005aff2092657ebca98b9de226e1c617f";
hash = "sha256-UK29ACZUK9zGfzW7C85uMw2aF5Gk+0aDeUdNV71PY+0=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-alt-cannadic";
name = repo;
rev = "4e548e6356b874c76e8db438bf4d8a0b452f2435";
hash = "sha256-4gzqVoCIhC0k3mh0qbEr8yYttz9YR0fItkFNlu7cYOY=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-edict2";
name = repo;
rev = "b2eec665b81214082d61acee1c5a1b5b115baf1a";
hash = "sha256-LIpGt6xB8dLUnazbJHZk6EH1/ZyAHMIn1m6Qpr2dsHs=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-jawiki";
name = repo;
rev = "6e08b8c823f3d2d09064ad2080e7a16552a7b473";
hash = "sha256-0YwAinlcI6yojCdW1MpLgMZfyYV7gk9Q+Wlu4lR3Hrg=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-neologd";
name = repo;
rev = "bf9d0d217107f2fb2e7d1a26648ef429d9fdcd27";
hash = "sha256-e0iM5fohwpNNhPl9CjkD753/Rgatg7GdwN0NSvlN94c=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-personal-names";
name = repo;
rev = "8a500f82c553936cbdd33b85955120e731069d44";
hash = "sha256-pMyYvl5S0+U++MO5m9rmbtxDzAmO4Xs8sFewOUGqgUA=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-place-names";
name = repo;
rev = "a847a02e0137ab9e2fdbbaaf120826f870408ca6";
hash = "sha256-B0kW8Wa/nCT4KEYl2Rz6gQcj0Po3GxU6i42unHhgZeU=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-skk-jisyo";
name = repo;
rev = "ee94f6546ce52edfeec0fd203030f52d4d99656f";
hash = "sha256-RXxO878ZBkxenrdo7cFom5NjM0m7CdYQk0dFu/HPp/Y=";
})
(fetchFromGitHub rec {
owner = "utuhiro78";
repo = "mozcdic-ut-sudachidict";
name = repo;
rev = "55f61c3fca81dec661c36c73eb29b2631c8ed618";
hash = "sha256-gNnBcuVU1M7rllfZXIrLg7WYUhKqPJsUjR8Scnq3Fw8=";
})
(fetchurl rec {
name = "jawiki";
url = "https://dumps.wikimedia.org/${name}/20240620/${name}-20240620-all-titles-in-ns0.gz";
recursiveHash = true;
hash = "sha256-p1LP8mHYknUPEB9u9CLCP1/uUjCVfb/mdpnOPawGcqQ=";
downloadToTemp = true;
postFetch = ''
mkdir -p "$out"
install -Dm444 "$downloadedFile" "$out/${name}.gz"
'';
})
(fetchFromGitHub rec {
owner = "musjj";
repo = "jp-zip-codes";
name = repo;
rev = "cfbb54655223d8e2cea6fedbaef202919d8d62fe";
hash = "sha256-ZvZL/6yTE6JrBu4ja7HvyBUKWUAIL0jULii5Im+zmLQ=";
})
];
sourceRoot = ".";
nativeBuildInputs = [
glibcLocales
pkg-config
python3
ruby
wrapQtAppsHook
];
buildInputs = [ qtbase qtwayland ];
preBuild = ''
cd mozc/src
'';
# Required so that the ruby scripts can work
env.LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive";
env.LC_ALL = "en_US.UTF-8";
inherit bazel;
removeRulesCC = false;
dontAddBazelOpts = true;
bazelFlags = [
"--config"
"oss_linux"
"--compilation_mode"
"opt"
];
bazelTargets = [
"server:mozc_server"
"gui/tool:mozc_tool"
];
fetchAttrs = {
postPatch = ''
substituteInPlace mozc/src/WORKSPACE.bazel \
--replace \
'url = "https://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip"' \
"url = \"file://$PWD/jp-zip-codes/ken_all.zip\"" \
--replace \
'url = "https://www.post.japanpost.jp/zipcode/dl/jigyosyo/zip/jigyosyo.zip"' \
"url = \"file://$PWD/jp-zip-codes/jigyosyo.zip\""
'';
preInstall = ''
rm -rf $bazelOut/external/qt_linux
'';
sha256 = "sha256-KTBdQte6eokKBnVlLWUOzGzwgwTVEq4qyICJhl8czJs=";
};
buildAttrs = {
postPatch = ''
sed -ri -e "s|^(LINUX_MOZC_SERVER_DIR = ).+|\1\"$out/lib/mozc\"|" mozc/src/config.bzl
(
cd merge-ut-dictionaries/src
sed -i -e "s|https://raw.githubusercontent.com/google/mozc/master|../../mozc|" remove_duplicate_ut_entries.rb
sed -i -e '/wget/d' count_word_hits.rb
sed -i -e "s|^filename = \"jawiki-.*|filename = \"../../jawiki/jawiki.gz\"|" count_word_hits.rb
[[ -e mozcdic-ut.txt ]] && rm mozcdic-ut.txt
dictionaries=(
${lib.escapeShellArgs dictionaries}
)
for name in "''${dictionaries[@]}"; do
tar -xf ../../mozcdic-ut-$name/mozcdic-ut-$name.txt.tar.bz2
cat mozcdic-ut-$name.txt >>mozcdic-ut.txt
done
ruby remove_duplicate_ut_entries.rb mozcdic-ut.txt
ruby count_word_hits.rb
ruby apply_word_hits.rb mozcdic-ut.txt
cat mozcdic-ut.txt >>../../mozc/src/data/dictionary_oss/dictionary00.txt
)
'';
installPhase = ''
runHook preInstall
install -Dm444 -t $out/share/licenses/mozc ../LICENSE
install -Dm444 -t $out/share/licenses/mozc/Submodules data/installer/credits_en.html
install -Dm555 -t $out/lib/mozc bazel-bin/server/mozc_server
install -Dm555 -t $out/lib/mozc bazel-bin/gui/tool/mozc_tool
runHook postInstall
'';
};
meta = with lib; {
description = "The Open Source edition of Google Japanese Input bundled with the UT dictionary";
homepage = "https://github.com/google/mozc";
license = with licenses; [
asl20 # abseil-cpp, merge-ut-dictionaries, mozcdic-ut-alt-cannadic,
# mozcdic-ut-edict2, mozcdic-ut-jawiki, mozcdic-ut-neologd,
# mecab-ipadic-neologd, mozcdic-ut-personal-names,
# mozcdic-ut-place-names, mozcdic-ut-skk-jisyo,
# mozcdic-ut-sudachidict
bsd2 # japanese-usage-dictionary
bsd3 # mozc, breakpad, gtest, gyp, japanese-usage-dictionary, protobuf, id.def
cc-by-sa-30 # jawiki-latest-all-titles, mozcdic-ut-jawiki.txt, jawiki
cc-by-sa-40 # mozcdic-ut-edict2.txt
gpl2Only # mozcdic-ut-alt-cannadic.txt
gpl2Plus # mozcdic-ut-skk-jisyo.txt
mit # wil
# naist-2003 # IPAdic
publicDomain # src/data/test/stress_test, mozcdic-ut-place-names.txt, jp-zip-codes, Okinawa dictionary
# unicode-30 # src/data/unicode, breakpad
];
maintainers = with maintainers; [ musjj ];
platforms = platforms.linux;
};
}

View File

@ -3,7 +3,9 @@ nix:
wstunnel: wstunnel:
http-upgrade-path-prefix-envvars: ENC[AES256_GCM,data:aS7Kvpj9aHtaiKZiakDuvdiDcVYFMkYv9FIH060Dbkahk6v+2bbxzgKcRtnDnLlphtGlZD7yWRcbvlYiG7Y5mRNS1X5PkspQwFKKnwGGHiWgfun9yxB6VHvPdb4W4SNA8QfRmqH4XmJUfDSPmZfh5Ggzhy7/74avC0vfqKBvQ+ml4fjqTmdS6EkFGrrUwIXFrjiCqdxnNYmp8I/L1b22R5YoY/JTsc4mG6N9s3B75GvsYI2EDG4vQ7EMyktd2CHsXJgNFRQUM+GzBbkO4VvG,iv:EbuV/2L+p4A+aloC6uQYiFFF7Lsz5A5RTGMuHMqtTpI=,tag:DThZOERbXuUdDJso7ertbg==,type:str] http-upgrade-path-prefix-envvars: ENC[AES256_GCM,data:aS7Kvpj9aHtaiKZiakDuvdiDcVYFMkYv9FIH060Dbkahk6v+2bbxzgKcRtnDnLlphtGlZD7yWRcbvlYiG7Y5mRNS1X5PkspQwFKKnwGGHiWgfun9yxB6VHvPdb4W4SNA8QfRmqH4XmJUfDSPmZfh5Ggzhy7/74avC0vfqKBvQ+ml4fjqTmdS6EkFGrrUwIXFrjiCqdxnNYmp8I/L1b22R5YoY/JTsc4mG6N9s3B75GvsYI2EDG4vQ7EMyktd2CHsXJgNFRQUM+GzBbkO4VvG,iv:EbuV/2L+p4A+aloC6uQYiFFF7Lsz5A5RTGMuHMqtTpI=,tag:DThZOERbXuUdDJso7ertbg==,type:str]
ssh: ssh:
secret-config: "" secret-config:
home: ENC[AES256_GCM,data:eUfhQb6yYYV3951sdwZpA1f8k+79mm1bMYY4EP+tn1g7DEHXG9XHYKPL3FLJMkaaXSWv5jbBZ3zrGodJPMH9VbcFOjvSdz9u56DnmyeR3S7Pwgj1YbELDn9akeVRpjcB1w2k8hn2vNIY1MV4vg==,iv:LQpS168sxPVegrlPJNZrVZE+GsZAMxRSl4EaHO6FFxg=,tag:w5SNj7LkYd+22SbLVbtsDQ==,type:str]
global: ""
nix-builders: nix-builders:
bob: bob:
key: ENC[AES256_GCM,data:CfzF32ELxePyls+JgxLRN3HeIyRGnH5G5MRuL23YGZ5DqBqjIjgoL64zzHB2tIn9D8RjUzmYxU7y70mwoej0V/Vr3qHtUkv2tC+XXw0uN4Be9n5iMo52Ovi+ZE4BVkKE94Y98YZtr0IbbjmgYAj+FS30lfld1KydKfmQUhzijIX8zUchL3spFwdxZSFQv2skXetEu9eIGMYeSTd7CSNk72zVONaW5s0cdKH0iLcO27CyzB3qArdn27gBbgn0rHvoaEvEMJGz4h4RHjk+JIU9+PKEqU8LMZOSYmD2wumX9W4s2L+YC5b5CDUvHaP0+n2bilpYCRuBlWMIzrNgkKyszVeNL+UnDM2nl1pF+ymapyrfyOGALuBoFd61uqE94/cCX21DAEB6E7SZtkQI/inKk1Wm7rvKEmTCjpHRNLf2J5i1IeePeHp1/ODHTfWZogtxh/SjpsR/ioGbt2X5yUvX+Xb6Ks35YwNyxVyXYV5azD60oQF/FSFwqNqRiNX/UE7a+FDwFgDoPleDOvJcv/35QZM6c9xYfWtUioKc,iv:LPQ+eJNeuL0SQRr1crRR2t4nZSanOihNrUK0mtdI3so=,tag:GjTZ+VbxYAqNDVg9m3IDVw==,type:str] key: ENC[AES256_GCM,data:CfzF32ELxePyls+JgxLRN3HeIyRGnH5G5MRuL23YGZ5DqBqjIjgoL64zzHB2tIn9D8RjUzmYxU7y70mwoej0V/Vr3qHtUkv2tC+XXw0uN4Be9n5iMo52Ovi+ZE4BVkKE94Y98YZtr0IbbjmgYAj+FS30lfld1KydKfmQUhzijIX8zUchL3spFwdxZSFQv2skXetEu9eIGMYeSTd7CSNk72zVONaW5s0cdKH0iLcO27CyzB3qArdn27gBbgn0rHvoaEvEMJGz4h4RHjk+JIU9+PKEqU8LMZOSYmD2wumX9W4s2L+YC5b5CDUvHaP0+n2bilpYCRuBlWMIzrNgkKyszVeNL+UnDM2nl1pF+ymapyrfyOGALuBoFd61uqE94/cCX21DAEB6E7SZtkQI/inKk1Wm7rvKEmTCjpHRNLf2J5i1IeePeHp1/ODHTfWZogtxh/SjpsR/ioGbt2X5yUvX+Xb6Ks35YwNyxVyXYV5azD60oQF/FSFwqNqRiNX/UE7a+FDwFgDoPleDOvJcv/35QZM6c9xYfWtUioKc,iv:LPQ+eJNeuL0SQRr1crRR2t4nZSanOihNrUK0mtdI3so=,tag:GjTZ+VbxYAqNDVg9m3IDVw==,type:str]
@ -23,60 +25,51 @@ sops:
- recipient: age1c92j4w0gqh32hwssl5m2mfrggssxax9pge8qxwytv9lmrnfttcvqdrgsst - recipient: age1c92j4w0gqh32hwssl5m2mfrggssxax9pge8qxwytv9lmrnfttcvqdrgsst
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAweE1kMlFnZVZxZ0dhblVn YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRTis4dldlaGJmVjN3dUU0
SjBrU3lUSlFtL2lCWm1VRUtocTdCWVg2aUJFCmc5dEJNdlpGSnFJSjhCNEZmQVc2 UHZHaXRHWU9wRWo5OVlVRitnV1NrKzBxb1RzCjhhMWxzbGczdDNmSTUvZis5SWp5
VVplaldBUlV6TSt1V0lJdTNGWEJpL0kKLS0tIGVhVng4c28wVTdpVXdrdll6N3dj b2lTNC9MTFRDSnl2UGVoTjRoRFFSaEUKLS0tIFZkNEk2aGIwZm1XR1BJYUNkZE8z
S0N3UldMUWl3VTBBajZkbTFQSzJVNzQKkjgkwjVL3tTJGL4raaRRAflyen6lrCjf U0RoMVNmUGwrV0J0UlJTK2ppdzNDMlUKaUuklGVibBHi4OAowm5vwZHTVapcCgfN
qIDU6yVaRPoeg4PMQyjT8B7Lvw/MAAir+v4dO+Wq+026YwEqasWmRg== y7r2/9aDZ5BGsLu2syTnEaRvbvTwABUUbwLlVR0a27xdvn81m0G5sA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc - recipient: age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4RStsMFU2VkJzelpSMnZr YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRMFFZbk14YnJvcWNLNGV3
VEd0ZTYvMG9rbGtTellidnhBU3ZqSXJyOGl3ClJEOXdlVXBIZStIZkF1aHVqM1Jr NUhhMXpRWEhoRXZqaDNEMnF0YjYrMWxQTlV3CjBNUEpUeHpiWEVwMHFSMHlNVXNC
RVI1WXhCWVo4ODZRR3dXdDBSWE4xckUKLS0tIGtjNXJmYSszTVRQcDlmWnlwZ0pL V1JxTDhhSWtIcjc2c2NwTWxLS1gxVk0KLS0tIDZFb2hzdEdNbkNkYmxieVVUdmV4
MXlQczBBZVpYdzhoRmowZHdiUWN0WWsKTf3WPqKO68UkgJiaN2WpiKqzRhlrfZB2 WDdGRUtDWmxIRkNDM0FjMWdFdXFDSDAKPbMyMqNDmpA92Gzpafd3Z+H85Gn/OSz+
XX1g3GzOXBubWsbJXM7ibxSWhZj2XRIZF3i4kkLpaIF/wB+df0iagQ== GZ1IpfWSdF9RWRmuHxGIqiNXK53Us+YR7GVhqduwY0ueAh3wMCYyGw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c - recipient: age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3RVIzVFlVVDdqU2tFZ3lD YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3eml4UFJ1dVdmUjROZGxv
T2NtdjBabmU1cVc3QlRkWnU5ZldodmlHZkJRCjZIcFllSGVoSEVtUkFFVXI1eXd6 akRzWmV2ZWlNak9IV2hVUnI1YW5Nazk5RzJVCm5ab0YwQTdUWlU5OW9nTlI4N2pK
cjhRbVhLM25HQjlobnNOK0ZiNGE3R1EKLS0tIGdES2I4Y3ZCWWtOVkNyZDZ3V0d3 RXBrQWhYN29OSEVCL21MZ25ZRXN4VjAKLS0tIE5WM2xkaVY0bEVwVUNsUXdnU0ta
V3NFU3ZuUjFxeHNyUGZXdW9aUElKM1UKutap6vQBYUAuDrnFKBa1J6PcjeTV03a1 UllPc1JCTXoxUERMM05abjhnR0g0d2sK/wyBVH6Dxris4TF05POtYQbWj4DWOeID
G6+jlJsBhMlUkiavWiqZ4JuGtSF3tCPZwf+NzuOZfGfjD3YOVHqY/w== RAdf30dDVtmg4qPwsHiIQ8f10gA1DrgIrcae0JS5VZcRLRw5/4+g9Q==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age10f4a5acpar8vwz3v298r3nv7gggfpmyh4wxpkc2hwq9paq0scf8qee8lau lastmodified: "2024-06-28T13:06:09Z"
enc: | mac: ENC[AES256_GCM,data:H19kxVh+pcjGhD78WHQYMGQ/0HY/F4NF6sYCvjn4hqPfFTJDDcVJ7QFxm2LL4Zz/+KNcI3qvnXO/g/MyaVxyJMyKC9LFwHT/0TwMRW1uHSBahPASFYvN0/h+6hp6TI9/DPeWjKEGk+1j1tU665YpnqYdOtRUfQEB02fmLf2jSiw=,iv:b0b4m/SlGNXBQ3ulLhbSHngSLZiFipPV+yAD6MG8vAo=,tag:B3oHJkWlFpY+g6dVkApDMw==,type:str]
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJelFCVGo4L0QrUnNqdWRm
cTR4TnJNdGx5SE82cEYzMk9ybmVzeUQ1MHlJCmFEbXZCVFBQUmVFMXFlVnQ1OFdI
R0RDNU5XYVNUbmRZSUJUU1VQQk1SdlEKLS0tIG02Q0dIdlJiRWt2cFJTN1VSbTVW
MGo3NEZyVlVWUDlVdGZyT2dVV3lxeUEKZGLbJ/PAmHdzfUfDvAQD/Nq179ooElth
mfF8FLeFoydSYAxXCDAw/JgjUPXckyjPXEjo3dnSBVec1Q6qHhPBpQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-07-08T12:29:09Z"
mac: ENC[AES256_GCM,data:z7J2kMlnqp6RJJj//O8j8W6O7HJkTGAbW0LW4Z6F4m0Fj18bylMQJ7kbNmf7mK5PHnItdHFnWJ/kY1vaXN7gD1SJccZ+jJcWI+nR3i5nr5GpQKoVlB1zYvBir5+CY6C7jJHpJim8WhfXG/hagSZrJ8Hz3hQon8j377g4XSTaHm0=,iv:2kg8iBuv3FWbWs3E5l5XTXzZ8i3tGCAK/PhJI4zWnNI=,tag:a/gNiM7zDqdf/arYNGeAIQ==,type:str]
pgp: pgp:
- created_at: "2024-07-08T12:38:34Z" - created_at: "2024-06-26T07:42:59Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA0av/duuklWYARAAvyl5qLP6x5yEGccj6rvoDwvY4G28bFKu5J+xS9UnKp5O hQIMA0av/duuklWYAQ//UQlQMjOkq53Ic8HTVTF+1594HNJKq75t6ewgSNVJy0yd
/ANlKgglGGJ3Sym2Mya4g9Lr49GmZDXSSWcWyktTbn8m1zL4bNdwVyRLLzCthYuG spwqbnmZooQRvhK0ewnFQMldmsD/7NwnLJmV/ARUaJJRXGTltWnh5oxvPKB7b4Qw
piZeFgzzlAve2rUT38QvTjeLqPgmAtoUGgkLzjl7kWJ3a28Fdx4BaGqKdFgd3u/J 9oxk8gOPyiBHq/oBMsrS1F5uYRd+/HliHcKR37PdXchEpy1CzuASjJ8fv+pUCy/1
ZjTudSRj6xOUv/9qyh/bs6eT4vJYZxMf31n3Y+v5njnWPWTxYb2EgtBdH/KM/uuB jiuHiZEK5yLhjAMb7UsXVZXit1jP+VMBZJk3qzTXTRqewF+Rea2P6BXo5RQAyF9M
gcFQRtBWHKhaNNDQpHZ8nKivFhyyzmkW98FkGX53+RjdkxtS1PznbpkQDR/HDfBJ xv6q+SItFPHglmyzkHvO1gg7lisohTY9fv51M9tcmPtUWnAeGywik8xT2RA5l5w2
R+a09EAc0ac/0A++KGLR2UQ5szpGsiYrTrcGFrd8diCBOUMeszRxPgTWQK0PdRli WPf7g0QIqWC6FmybsWdcBAWJCGKvsfCveEtY5J+29BYfCkPlhuKmou8CZwzIB66p
UP12HHHwESmzeZCji/gjsa31c+4fCdyEoHm924/Z+OhVoC2R+oGU+sVDBpLrPSKa AsQMmu8JwbGSEYe78r/zy379ybQ/H7j/8uGDsJmAJqKvJfG1o6QsAlpj+fSoSU/5
Y9EPRmjF63oUm9QIELomke61ylswET372RQyBOOHw2dsPq8AK02wmMKkyHnMN/wG k9E5OyEdRyws4W1CoaAvyTML8gSXBXpA9oIZx5WYYh6mJ+ETNfDlaIAGXY2Sbdr+
Dhjv+rti97h42xe5X6q/UC2yis5YWB17Zhf51zo1XujB40TFAwQfhfh3F1s1+dKj IGkLhvGETQGbCW4EZB0hDEE3QmzNolYR6YybL74HtGQT2XOWg0+UkTZZ1ZRw+jHk
aVoyvEp5Fk7ryY4YN/D7Eq1qJfwE73ycwoLcZvkeNzIf3839vQJ5ferWkATeQ3qm bY6XQbloTQpSI6tFCGq5hQeVQDH17lTb/sEh0qAZkdAguvUgPlO6PHV5cS3SXAS7
f8mb/uhQzxMYJsUcBz9UzMVzX5t7WNo3zAWddnHg1/WypbPi2ettn4C9lXYLV27S Ga7vllL8VOq/dbJ5ll7xbnxwBxkDrVqu2fCnS9L3P/biteafB/d0gRhjhFEhaUHS
XAHSfXSeC2ylzWVQeWESFd2U+/8kkYNsv0g5f97ktF7e4PV+F/4Xz2Mc30iAJ4AE XAGVZdphiKbcydow/ucviT2TlZVmi7yWLcfk+uEPxf0mb5FMFRSasSmAvp4b7Wcz
3jbC0rVpmBmQeo4OkiyuPT5LEwdEzNQXXBTqdUTuF+LEK6ORUyAY72jRWRkX lNBuJPjOnYrkootAaLSUAdMukfAin1HGWxmINsybPzuPFlTxR3RSgjBQn/2w
=n0Ia =kNmC
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: F7D37890228A907440E1FD4846B9228E814A2AAC fp: F7D37890228A907440E1FD4846B9228E814A2AAC
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted

View File

@ -1,44 +0,0 @@
git:
nordicsemi-config: ENC[AES256_GCM,data:ziuM41RTsxkiutxjj8Pl5YuoETkxQNWEbGKd2Y99E0kTV9fL67g+YeGjeVFXErraeB/+jBVpjitK3lSHxlpxZLWckZ0G6A7NAFNagY9cORCFlLb+egyKb44xu8vBt4V5eA==,iv:yG06oluENc038cm5A9tpmSQtaGjd6nYDi/FnBd3A8Rk=,tag:ky6bCsYLOZmWObHnJ816Zw==,type:str]
ssh:
secret-config: ""
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age10f4a5acpar8vwz3v298r3nv7gggfpmyh4wxpkc2hwq9paq0scf8qee8lau
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEN09QV2FpRUFzQW5oSnUx
V1FTa0RZK0Juek1aNWNzZm1TR255YzJOWlFjCmNDSXhLbkxNZGMyOGxNaWxoUkxp
c2RON3RCNGV1ZnM4SEVHaHluOFNidUkKLS0tIDdJTlhsVWpLMXJ0UkNRNVlQUnd0
QllyaVlIVEVrSlJDZzlwdFpoRlg3bmsKYBGLYmsfFu6GuRUPGsS0+vkUv1QzJXZl
D9CFcRQw0Xzti0DvDj7cWrCJ32F1eYRp/9LWyG1CEjfoNEKyUJZ2qQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-07-08T13:25:35Z"
mac: ENC[AES256_GCM,data:JUYECqv5+wtAhDWr+2pNSh/EXhh/gjjUFCjC6oH+3cXpZHacg23S/D5ol6nIXKH1+XUFaIX10YQOC0WaciZUcfgCP4t01MJRB3OE1iYcGllyeP+9gEIKfoeEajHVQdYWZHUql7T4EnQWs74uHiF7nt6jALnp98Wc4Pny6xvvZds=,iv:gDr7O566etB9oYAJB1RIK1PQJIc1NVcIlhZISidVmlA=,tag:bQ1iC1Xi5A+VbBgunHt02w==,type:str]
pgp:
- created_at: "2024-07-08T12:27:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA0av/duuklWYARAAvygqGcBQohvHxwGMjDqwaYxVOLHUCY+EWdQYCGlhvJ9o
kdmrwJs8coePs2CBGq98Yo6LuplI9ArTjAsSSG8dYXC8LR51ts++XHkqoSMsEQdO
CF4DonDNy1+goHgScM2JBgVij+zUd1SumJHiuXdCu9MsNMoo1pIjE9xTTQiYutx7
gz6Q4AITBmjqZgfxjNWLXq7iuIFiu5YEiluc7TP+FUfabOljQCzbmYHg7f/7ZpCM
pEko4fdRRwqCrdzjHAmoUXbqy0yU67yoK0fBFu6wnrZOFk/nSzgEelnSb0kx9z88
aET6NuLbZa0I72Z9xEcpECdRNSGRt/UXFIKBR0JyNmBLhZcERq3Tm7zG72Cmmi8g
jL6oPTfi0B0nv7nLWXCj8kHFFDI0Ck5H6ZlQ5y7Tu/VTuNnrdoHwn/hCh0b25Y9s
uJZuVpO2l/W6sb3Db6u/eeMvy8by1vvvFDEj75zKyImPP4bbn4nlJyu4qJ8scefX
5y97DbXmsssEgOgogojf6JKfyJ53Xy4/ROEnje9S+nrNlgQJKUrP2JVkppq357os
R6z5mZJAR5LkQ7nC0hkxvbGDyRys8qEIXgyzzPcx/imepH4H92v3X5xTcWmue3QO
GPGXty45HVNXQM05q7UrAXOf50a0IZFnYeVD1f0swVd/Fc1WDeDxXWmhgcgxPXzS
XgETKOrQh/7hefJqaeDNT4KTZ/Bnkz1gul1n+BsMSkd8sa9sXQNB2JMwhNQFSdcP
C011agjjx0BkUHArCFbGbCaXnFlB8nuC1xJDZ9US/IEUF5hy4Ozu1LJHJuF20dw=
=H2VJ
-----END PGP MESSAGE-----
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
unencrypted_suffix: _unencrypted
version: 3.8.1