Refractor to dendritic approach.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.audio = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.home-audio.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.home-audio.enable {};
|
||||
};
|
||||
|
||||
config.flake.modules.nixos.audio = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.hardware-audio.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.hardware-audio.enable {
|
||||
services = {
|
||||
pipewire = {
|
||||
enable = true;
|
||||
audio.enable = true;
|
||||
pulse.enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
jack.enable = true;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = with pkgs; [pavucontrol];
|
||||
musnix.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{...}: {
|
||||
config.flake.modules.nixos.binfmt = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.binfmt.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.binfmt.enable {
|
||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
config.flake.modules.nixos.bluetooth = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.bluetooth.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.bluetooth.enable {
|
||||
services.blueman.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.claude = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.claude.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.claude.enable {
|
||||
home.packages = with pkgs; [claude-code claude-agent-acp];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.encryption = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.encryption.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.encryption.enable {
|
||||
programs.password-store = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PASSWORD_STORE_KEY = "076AA297579A0064";
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
yubikey-personalization
|
||||
pinentry-gtk2
|
||||
];
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
};
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
grabKeyboardAndMouse = false;
|
||||
pinentry.package = pkgs.pinentry-gtk2;
|
||||
};
|
||||
home.file.".ssh/config".source = ./ssh-config;
|
||||
home.file.".ssh/gpg-as-ssh.pub".source = ./gpg-as-ssh.pub;
|
||||
home.file.".gnupg/sshcontrol".source = ./sshcontrol;
|
||||
};
|
||||
};
|
||||
}
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBFZRqiTsOCAJPMqUyMeLd2MbyjdGoyqDVq5/Inhb6EOaM1NUGG4b6FPmYgFLyJIm5LC9BOo6M7npiaiOs/zMqp+hoGLNQUNwm5/G0uy1bjkEfKdUTdGnJ2+M9rkxrR1c+KXrjkiqECqTbnPE4mJbGyVxBW2MwMeP5w8c0DB5KO528PetvHMPPQuEdXyZzDI4kKtVpMlJoPIrIGlNFX0G/wrgXcM4zU1snOTuYGqZnWW++4kBsgIlRKpf/bLJyUMTp30eLVr0fQ6OMBtj1tzUUBaaowU6VGYQQDU/rIh/NpkA2cEVPXZegM4OohkAqrJBFPIAg90WD9Z/SyQlz0Jn8PpAloP0Cuq2vVRr+QLEwxqGiFq91YQ2VtwksMHwJGVrXRCNegpxTZQijWMEd+o0FD2cEd7Ftw6v2L6g12GJ3QGX/q0d/u0GongLLa9fPXl4VoAu7AL+cUcbX/SS7RCG8kYAR3DwOazVbK0NWEdwvWdoSU4lZ3j2at1xqMGjHjyLiTeUqZBjm+Sl5MJWIYNg+8hnONljvggg4SzDFDAkgVLZtOCaZibsMA1ucGR7VRCM09uoaEI4/ZS5pCBtYcp8X67Bv67Og8s2NFf5sUfYBPPKpdBSs+dEPycNVff6JlmzfNiyzLawacGKIDWYSgkOl43N/5ehtpsL3HMZ+5SVNIw== (none)
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
IdentityAgent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
61D809B46CEE2A0AF799C4C2FADB0F61A19EEABD
|
||||
@@ -0,0 +1,32 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.git-config = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.git-config.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.git-config.enable {
|
||||
home.packages = with pkgs; [pass-git-helper unzip];
|
||||
programs.git = {
|
||||
enable = true;
|
||||
signing = {
|
||||
key = "6D17E295C70E2674";
|
||||
signByDefault = true;
|
||||
};
|
||||
settings = {
|
||||
credential.helper = "!pass-git-helper $@";
|
||||
user = {
|
||||
name = "Aner Zakobar";
|
||||
email = "aner@zakobar.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
home.file.".config/pass-git-helper/git-pass-mapping.ini".source =
|
||||
./pass-git-mapping.ini;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
[*git.zakobar.com*]
|
||||
target=zakobar.com/users/aner
|
||||
@@ -0,0 +1,20 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.headphones = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.headphones-whmx4000.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.headphones-whmx4000.enable {
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin
|
||||
"azos-connect-headphones-whmx4000"
|
||||
"echo \"connect AC:80:0A:AF:E1:C2\" | bluetoothctl")
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.hfsprogs = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.hfsprogs.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.hfsprogs.enable {
|
||||
home.packages = with pkgs; [hfsprogs];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.hyprland = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.suites.hyprland.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.suites.hyprland.enable {
|
||||
home.packages = with pkgs; [
|
||||
hyprland
|
||||
waybar
|
||||
wofi
|
||||
kitty
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
networkmanagerapplet
|
||||
xwayland
|
||||
];
|
||||
azos.emacs.enabledSuites = ["azos-emacs-hyprland"];
|
||||
azos.emacs.pkgs = [pkgs.azos-emacs-hyprland];
|
||||
azos.emacs.emacspkg = pkgs.emacs-pgtk;
|
||||
home.file.".login.sh" = {
|
||||
text = ''
|
||||
#!/usr/bin/env bash
|
||||
${pkgs.hyprland}/bin/Hyprland
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
orgTrivialBuild,
|
||||
epkgs,
|
||||
pkgs,
|
||||
}:
|
||||
orgTrivialBuild {
|
||||
pname = "azos-emacs-hyprland";
|
||||
version = "0.1.6";
|
||||
src = ./config.org;
|
||||
packageRequires = with epkgs; [
|
||||
pkgs.azos-emacs-base
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#+title: Aner's Emacs Hyprland Configuration
|
||||
#+property: header-args :results silent
|
||||
|
||||
* Base setup
|
||||
** Require
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(require 'azos-emacs-base)
|
||||
#+end_src
|
||||
|
||||
* Hyprland Specific
|
||||
|
||||
* Provide
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(provide 'azos-emacs-hyprland)
|
||||
#+end_src
|
||||
@@ -0,0 +1,3 @@
|
||||
{...}: {
|
||||
config.flake.overlayPkgs.azos-emacs-hyprland = pkgs: pkgs.localEmacsPkg ./_pkg.nix;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.kubernetes = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.kubectl.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.kubectl.enable {
|
||||
home.packages = with pkgs; [kubectl kubernetes-helm velero];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.lauretta = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.suites.lauretta.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf (config.azos.emacs.enable && config.azos.suites.lauretta.enable) {
|
||||
azos.emacs.enabledSuites = ["azos-emacs-lauretta"];
|
||||
azos.emacs.pkgs = [pkgs.azos-emacs-lauretta];
|
||||
home.packages = with pkgs; [nix-search-cli];
|
||||
};
|
||||
};
|
||||
}
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
{
|
||||
orgTrivialBuild,
|
||||
epkgs,
|
||||
pkgs,
|
||||
}:
|
||||
orgTrivialBuild {
|
||||
pname = "azos-emacs-lauretta";
|
||||
version = "0.1.6";
|
||||
src = ./config.org;
|
||||
packageRequires = with epkgs; [
|
||||
pkgs.azos-emacs-base
|
||||
pkgs.azos-emacs-dev
|
||||
pkgs.azos-emacs-editor
|
||||
pkgs.azos-emacs-exwm
|
||||
pkgs.azos-emacs-station
|
||||
|
||||
agent-shell
|
||||
org-caldav
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
#+title: Aner's Emacs Lauretta Configuration
|
||||
#+property: header-args :results silent
|
||||
|
||||
* Base setup
|
||||
** Require
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(require 'azos-emacs-base)
|
||||
(require 'azos-emacs-dev)
|
||||
(require 'azos-emacs-editor)
|
||||
(require 'azos-emacs-exwm)
|
||||
(require 'azos-emacs-station)
|
||||
#+end_src
|
||||
|
||||
* Lauretta specific
|
||||
|
||||
** LLM
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq
|
||||
gptel-model 'openai/gpt-oss-120b
|
||||
gptel-backend
|
||||
(gptel-make-openai "Groq"
|
||||
:host "api.groq.com"
|
||||
:endpoint "/openai/v1/chat/completions"
|
||||
:stream t
|
||||
:key "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"
|
||||
:models '(openai/gpt-oss-120b)))
|
||||
#+end_src
|
||||
|
||||
** Agent Shell
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq agent-shell-opencode-default-model-id "opencode/big-pickle")
|
||||
;; (setq agent-shell-preferred-agent-config (agent-shell-opencode-make-agent-config))
|
||||
#+end_src
|
||||
|
||||
** Headphones
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun azos/connect-headphones ()
|
||||
(interactive)
|
||||
(start-process-shell-command "connect-headphones" nil "azos-connect-headphones-whmx4000"))
|
||||
|
||||
(define-key azos/global-minor-mode/open-keymap
|
||||
(kbd "h") 'azos/connect-headphones)
|
||||
#+end_src
|
||||
|
||||
** Tab bar setup
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(when (fboundp #'azos/bat/enable-tab-display)
|
||||
(azos/bat/enable-tab-display))
|
||||
|
||||
(when (fboundp #'azos/network/enable-tab-display)
|
||||
(azos/network/enable-tab-display))
|
||||
|
||||
(when (fboundp #'azos/audio/enable-tab-display)
|
||||
(azos/audio/enable-tab-display))
|
||||
#+end_src
|
||||
|
||||
** Nixpkgs Search
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun azos/nixpkgs-parse-json-lines (str)
|
||||
"Parse JSON Lines format (one JSON object per line) from STR."
|
||||
(mapcar (lambda (line)
|
||||
(and (not (string-empty-p line))
|
||||
(string-match "^{" line)
|
||||
(condition-case nil
|
||||
(json-parse-string line)
|
||||
(error nil))))
|
||||
(split-string (string-trim str) "\n" t)))
|
||||
|
||||
(defun azos/nixpkgs-g (key hash)
|
||||
"Get KEY from HASH table."
|
||||
(when (hash-table-p hash)
|
||||
(gethash key hash)))
|
||||
|
||||
(defun azos/nixpkgs-search ()
|
||||
"Search for a nixpkgs package and show its info."
|
||||
(interactive)
|
||||
(let* ((pattern (read-string "Search pattern: "))
|
||||
(json-output (shell-command-to-string
|
||||
(format "nix-search --json --max-results 50 '%s'" pattern)))
|
||||
(results (and json-output
|
||||
(not (string-empty-p json-output))
|
||||
(azos/nixpkgs-parse-json-lines json-output)))
|
||||
(packages (delq nil (mapcar (lambda (item)
|
||||
(let ((pname (azos/nixpkgs-g "package_pname" item)))
|
||||
(when pname
|
||||
(cons pname item))))
|
||||
results))))
|
||||
(if packages
|
||||
(let* ((selected (completing-read "Package: " (mapcar #'car packages) nil t))
|
||||
(package-data (cdr (assoc-string selected packages))))
|
||||
(let ((buf (get-buffer-create "*nixpkgs-package-info*")))
|
||||
(with-current-buffer buf
|
||||
(erase-buffer)
|
||||
(if package-data
|
||||
(progn
|
||||
(insert (format "Package: %s\n\n" selected))
|
||||
(insert (format "Version: %s\n" (or (azos/nixpkgs-g "package_pversion" package-data) "unknown")))
|
||||
(insert (format "Attr: %s\n" (or (azos/nixpkgs-g "package_attr_name" package-data) "unknown")))
|
||||
(insert (format "\nDescription: %s\n"
|
||||
(or (azos/nixpkgs-g "package_description" package-data) "none")))
|
||||
(let ((programs (azos/nixpkgs-g "package_programs" package-data)))
|
||||
(when (vectorp programs)
|
||||
(insert (format "\nPrograms: %s\n"
|
||||
(mapconcat #'identity (append programs nil) " ")))))
|
||||
(let ((homepage (let ((h (azos/nixpkgs-g "package_homepage" package-data)))
|
||||
(when (vectorp h) (aref h 0)))))
|
||||
(when homepage
|
||||
(insert (format "\nHomepage: %s\n" homepage))))
|
||||
(let ((licenses (azos/nixpkgs-g "package_license" package-data)))
|
||||
(when (vectorp licenses)
|
||||
(insert (format "\nLicense: %s\n"
|
||||
(mapconcat (lambda (l)
|
||||
(or (azos/nixpkgs-g "fullName" l) ""))
|
||||
(append licenses nil) ", ")))))
|
||||
(insert (format "Package: %s\n\n" selected)
|
||||
"\nNo additional info available.")))
|
||||
(goto-char (point-min)))
|
||||
(display-buffer buf)))
|
||||
(message "No packages found matching '%s'" pattern))))
|
||||
|
||||
(define-key azos/global-minor-mode/open-keymap
|
||||
(kbd "n") 'azos/nixpkgs-search)
|
||||
#+end_src
|
||||
|
||||
** CalDAV / Org Sync
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(require 'org-caldav)
|
||||
|
||||
(defvar azos/lauretta/nextcloud-user "aner"
|
||||
"Nextcloud username for CalDAV sync.")
|
||||
|
||||
(setq org-caldav-url "https://nextcloud.zakobar.com/remote.php/dav/calendars/1ddd03a6-4c2d-103c-9f7b-27b20313341d"
|
||||
org-caldav-calendar-id "personal"
|
||||
org-caldav-inbox "~/org/caldav-inbox.org"
|
||||
org-caldav-files '("~/org/todo.org")
|
||||
org-icalendar-timezone "Asia/Jerusalem")
|
||||
|
||||
(defun azos/caldav-sync ()
|
||||
"Sync org-caldav with Nextcloud calendar, reading password from pass."
|
||||
(interactive)
|
||||
(let* ((password (string-trim
|
||||
(shell-command-to-string
|
||||
(format "pass zakobar.com/users/%s" azos/lauretta/nextcloud-user))))
|
||||
(url-http-real-basic-auth-storage
|
||||
(list (list "nextcloud.zakobar.com:443"
|
||||
(cons azos/lauretta/nextcloud-user password)))))
|
||||
(org-caldav-sync)))
|
||||
|
||||
(define-key azos/global-minor-mode/open-keymap
|
||||
(kbd "C") 'azos/caldav-sync)
|
||||
#+end_src
|
||||
|
||||
* Provide
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(provide 'azos-emacs-lauretta)
|
||||
#+end_src
|
||||
@@ -0,0 +1,3 @@
|
||||
{...}: {
|
||||
config.flake.overlayPkgs.azos-emacs-lauretta = pkgs: pkgs.localEmacsPkg ./_pkg.nix;
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.mail = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
default_account_params = {
|
||||
realName = "Aner Zakobar";
|
||||
notmuch.enable = true;
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
};
|
||||
};
|
||||
default_gmail_params =
|
||||
default_account_params
|
||||
// {
|
||||
flavor = "gmail.com";
|
||||
};
|
||||
default_smtp = {
|
||||
tls = {
|
||||
enable = true;
|
||||
certificatesFile = "/etc/ssl/certs/ca-certificates.crt";
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.azos.mail.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.mail.enable {
|
||||
programs = {
|
||||
notmuch = {
|
||||
enable = true;
|
||||
hooks = {preNew = "mbsync -a";};
|
||||
};
|
||||
mbsync.enable = true;
|
||||
msmtp.enable = true;
|
||||
lieer.enable = true;
|
||||
};
|
||||
services.lieer.enable = true;
|
||||
accounts.email.accounts = {
|
||||
gmail =
|
||||
default_gmail_params
|
||||
// {
|
||||
address = "anerisgreat@gmail.com";
|
||||
userName = "anerisgreat";
|
||||
passwordCommand = "pass gmail.com/mbsync-anerisgreat";
|
||||
};
|
||||
bgu =
|
||||
default_gmail_params
|
||||
// {
|
||||
address = "anerz@post.bgu.ac.il";
|
||||
userName = "anerz@post.bgu.ac.il";
|
||||
passwordCommand = "pass post.bgu.ac.il/mbsync-anerz";
|
||||
};
|
||||
zakobar =
|
||||
default_account_params
|
||||
// {
|
||||
address = "aner@zakobar.com";
|
||||
msmtp.enable = true;
|
||||
primary = true;
|
||||
userName = "aner@zakobar.com";
|
||||
imap = {host = "mail.privateemail.com";};
|
||||
smtp =
|
||||
default_smtp
|
||||
// {
|
||||
port = 587;
|
||||
host = "mail.privateemail.com";
|
||||
};
|
||||
passwordCommand = "pass zakobar.com/mail/aner";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.mpris-proxy = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.mpris-proxy.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.mpris-proxy.enable {
|
||||
services.mpris-proxy.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.nextcloud = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.nextcloud-client.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.nextcloud-client.enable {
|
||||
home.packages = with pkgs; [nextcloud-client];
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.opencode = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.opencode.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.opencode.enable {
|
||||
programs.opencode.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
# Basing this heavily on ii.com qutebrowser template
|
||||
|
||||
config.load_autoconfig(True)
|
||||
|
||||
#Using a lot from DTs config
|
||||
#https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/qutebrowser/config.py
|
||||
#Also using this https://github.com/miseran/tabs_are_windows/blob/main/config.py
|
||||
|
||||
c.tabs.show = 'never'
|
||||
c.session.default_name = ''
|
||||
c.auto_save.interval = 0
|
||||
c.tabs.tabs_are_windows = True
|
||||
c.window.title_format = 'qute: {private}{host}{perc}{title_sep}{current_title}'
|
||||
|
||||
#Search engines from DT
|
||||
c.url.searchengines = {
|
||||
'DEFAULT': 'https://duckduckgo.com/?q={}',
|
||||
'am': 'https://www.amazon.com/s?k={}', #Amazon
|
||||
'aw': 'https://wiki.archlinux.org/?search={}', #Arch Wiki
|
||||
'go': 'https://www.google.com/search?q={}', #Google
|
||||
're': 'https://www.reddit.com/r/{}', #reddit
|
||||
'wi': 'https://en.wikipedia.org/wiki/{}', #Wikipedia
|
||||
'yt': 'https://www.youtube.com/results?search_query={}', #Youtube
|
||||
'gh': 'https://github.com/search?q={}', #Qutebrowser
|
||||
'wa' : 'https://www.wolframalpha.com/input/?i={}', #Wolfram alpha
|
||||
'nx' : 'https://search.nixos.org/packages?channel=25.11&query={}' #nixpkgs
|
||||
}
|
||||
|
||||
#Youtube stuff from DT.
|
||||
#Added media-title to MPV and youtube-dl with exwm process to track progress.
|
||||
config.bind('M', 'hint links spawn mpv --title="${media-title}" {hint-url}')
|
||||
config.bind('Z', 'hint links spawn emacsclient -e "(start-process \\"youtube-dl {hint-url}\\" \\"youtube-dl {hint-url}\\" \\"youtube-dl\\" \\"-o\\" \\"~/downloads/%(title)s.%(ext)s\\" \\"{hint-url}\\" \\"--newline\\")"')
|
||||
|
||||
config.bind('xb', 'config-cycle statusbar.show always in-mode')
|
||||
c.statusbar.show = 'in-mode'
|
||||
|
||||
#Only confirm if downloads
|
||||
c.confirm_quit = ['downloads']
|
||||
|
||||
c.downloads.location.directory = '~/downloads'
|
||||
c.downloads.location.prompt = False
|
||||
|
||||
c.editor.command = ['emacsclient', '-e', '(find-file "{}")']
|
||||
|
||||
monospace = "10pt 'DejaVu Sans Mono'"
|
||||
c.fonts.completion.category = f"bold{monospace}"
|
||||
c.fonts.completion.entry = monospace
|
||||
c.fonts.debug_console = monospace
|
||||
c.fonts.downloads = monospace
|
||||
c.fonts.keyhint = monospace
|
||||
c.fonts.messages.error = monospace
|
||||
c.fonts.messages.info = monospace
|
||||
c.fonts.messages.warning = monospace
|
||||
c.fonts.prompts = monospace
|
||||
c.fonts.statusbar = monospace
|
||||
c.fonts.hints = "bold 13px 'LiberationMono'"
|
||||
|
||||
#Set highdpi
|
||||
c.qt.highdpi = True
|
||||
c.zoom.default = 70
|
||||
@@ -0,0 +1,15 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.qutebrowser = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.qutebrowser-config.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.qutebrowser-config.enable {
|
||||
home.file.".config/qutebrowser/config.py".source = ./config.py;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.reaper = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.reaper.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.reaper.enable {
|
||||
home.packages = with pkgs; [
|
||||
reaper
|
||||
helm
|
||||
lsp-plugins
|
||||
vital
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.snx-rs = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.azos.snx-rs;
|
||||
in {
|
||||
options.azos.snx-rs = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
server = lib.mkOption {
|
||||
default = "vpn.bgu.ac.il";
|
||||
type = lib.types.str;
|
||||
description = "VPN server address";
|
||||
};
|
||||
username = lib.mkOption {
|
||||
default = "anerz@vpn";
|
||||
type = lib.types.str;
|
||||
description = "VPN username";
|
||||
};
|
||||
loginType = lib.mkOption {
|
||||
default = "vpn";
|
||||
type = lib.types.str;
|
||||
description = "Login type";
|
||||
};
|
||||
ignoreServerCert = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
description = "Ignore server certificate validation";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
snx-rs
|
||||
(pkgs.writeShellScriptBin "snx-connect" ''
|
||||
#!/bin/sh
|
||||
sudo ${pkgs.snx-rs}/bin/snx-rs -m command &
|
||||
sleep 1
|
||||
${pkgs.snx-rs}/bin/snxctl connect
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "snx-disconnect" ''
|
||||
#!/bin/sh
|
||||
${pkgs.snx-rs}/bin/snxctl disconnect
|
||||
pkill -x snx-rs 2>/dev/null || true
|
||||
'')
|
||||
];
|
||||
home.file.".config/snx-rs/snx-rs.conf" = {
|
||||
text = ''
|
||||
server ${cfg.server}
|
||||
username ${cfg.username}
|
||||
login-type ${cfg.loginType}
|
||||
ignore-server-cert ${lib.boolToString cfg.ignoreServerCert}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{...}: {
|
||||
config.flake.modules.nixos.steam = {
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options.azos.steam.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.steam.enable {
|
||||
programs.steam.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{...}: {
|
||||
config.flake.modules.nixos.virtualization = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.virtualization.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.virtualization.enable {
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
swtpm.enable = true;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
qemu_kvm
|
||||
libvirt
|
||||
virt-manager
|
||||
virt-viewer
|
||||
];
|
||||
services.spice-vdagentd.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [5900 5901];
|
||||
networking.firewall.allowedUDPPorts = [5900 5901];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
config.flake.modules.homeManager.ytdl = {
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
options.azos.ytdl.enable = lib.mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
config = lib.mkIf config.azos.ytdl.enable {
|
||||
home.packages = with pkgs; [yt-dlp];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user