Refractor to dendritic approach.
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
config.flake.nixosConfigurations.lauretta = inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
outputs = config.flake;
|
||||||
|
suiteModules = config.flake.modules;
|
||||||
|
};
|
||||||
|
modules = [../nixos/configuration.nix];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
config.flake.nixosConfigurations.vm = inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
outputs = config.flake;
|
||||||
|
suiteModules = config.flake.modules;
|
||||||
|
};
|
||||||
|
modules = [../nixos/configuration-vm.nix];
|
||||||
|
};
|
||||||
|
}
|
||||||
+1
-1
Submodule azos-core updated: 72c8e88c11...383a85b9a5
@@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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,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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
orgTrivialBuild {
|
orgTrivialBuild {
|
||||||
pname = "azos-emacs-hyprland";
|
pname = "azos-emacs-hyprland";
|
||||||
version = "0.1.6";
|
version = "0.1.6";
|
||||||
src = ./elisp/azos-emacs-hyprland.org;
|
src = ./config.org;
|
||||||
packageRequires = with epkgs; [
|
packageRequires = with epkgs; [
|
||||||
pkgs.azos-emacs-base
|
pkgs.azos-emacs-base
|
||||||
];
|
];
|
||||||
@@ -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];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
orgTrivialBuild {
|
orgTrivialBuild {
|
||||||
pname = "azos-emacs-lauretta";
|
pname = "azos-emacs-lauretta";
|
||||||
version = "0.1.6";
|
version = "0.1.6";
|
||||||
src = ./elisp/azos-emacs-lauretta.org;
|
src = ./config.org;
|
||||||
packageRequires = with epkgs; [
|
packageRequires = with epkgs; [
|
||||||
pkgs.azos-emacs-base
|
pkgs.azos-emacs-base
|
||||||
pkgs.azos-emacs-dev
|
pkgs.azos-emacs-dev
|
||||||
@@ -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,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];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+121
-36
@@ -4,7 +4,8 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"cabata": "cabata",
|
"cabata": "cabata",
|
||||||
"evil-hl-line": "evil-hl-line",
|
"evil-hl-line": "evil-hl-line",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"flake-parts": "flake-parts",
|
||||||
|
"import-tree": "import-tree"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"path": "./azos-core",
|
"path": "./azos-core",
|
||||||
@@ -23,11 +24,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771368993,
|
"lastModified": 1779008956,
|
||||||
"narHash": "sha256-mWcLaCViNfUMPcqCvQRed4kR20Ifs8aaHcjMlVbF2tQ=",
|
"narHash": "sha256-jpJ30XX1pAH+Mpsyj92K8t6812Qs+P4J31wO7RS/e+Y=",
|
||||||
"owner": "anerisgreat",
|
"owner": "anerisgreat",
|
||||||
"repo": "cabata",
|
"repo": "cabata",
|
||||||
"rev": "4fa661795527fa437698409395dc4363fbc0adf0",
|
"rev": "ff1871152ffb635e18e1a9804750192c6969d1cb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -55,6 +56,42 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778716662,
|
||||||
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778716662,
|
||||||
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": [
|
"systems": [
|
||||||
@@ -102,11 +139,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778954430,
|
"lastModified": 1779627636,
|
||||||
"narHash": "sha256-oaNyOr05lblaQdtbkbN1wO0b2KLIL2O1LkmwDgdQp4I=",
|
"narHash": "sha256-J6JGf42zNzLo/CrRdKb5dNznpLI+eGxN/5KTLG1Mo5s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "26aaab785b0bab4af60a2c42b22760fa906ef22a",
|
"rev": "044c30c19550c0557997dece4ce9e54d2fa77ba1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -116,9 +153,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"import-tree": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778781969,
|
||||||
|
"narHash": "sha256-Jjuz5CmSkur8KvLDoGa+vylEp+RkQtv4mt/qcMznpH0=",
|
||||||
|
"owner": "vic",
|
||||||
|
"repo": "import-tree",
|
||||||
|
"rev": "d321337efd0f23a9eb14a42adb7b2c29313ab274",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "vic",
|
||||||
|
"repo": "import-tree",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"import-tree_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778781969,
|
||||||
|
"narHash": "sha256-Jjuz5CmSkur8KvLDoGa+vylEp+RkQtv4mt/qcMznpH0=",
|
||||||
|
"owner": "vic",
|
||||||
|
"repo": "import-tree",
|
||||||
|
"rev": "d321337efd0f23a9eb14a42adb7b2c29313ab274",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "vic",
|
||||||
|
"repo": "import-tree",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"musnix": {
|
"musnix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777848538,
|
"lastModified": 1777848538,
|
||||||
@@ -136,11 +203,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778945272,
|
"lastModified": 1779258371,
|
||||||
"narHash": "sha256-Aipz0UiBhE2a1FYJrNc2y+5vKWo5QVkhmaIJk3/ls+g=",
|
"narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "379c1f274f0fa354d012f0600806de54e79f29b5",
|
"rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -164,13 +231,43 @@
|
|||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777168982,
|
||||||
|
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777168982,
|
||||||
|
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778869304,
|
"lastModified": 1779508470,
|
||||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
"rev": "29916453413845e54a65b8a1cf996842300cd299",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -182,11 +279,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778443072,
|
"lastModified": 1779508470,
|
||||||
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=",
|
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32",
|
"rev": "29916453413845e54a65b8a1cf996842300cd299",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -197,20 +294,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1774273680,
|
|
||||||
"narHash": "sha256-a++tZ1RQsDb1I0NHrFwdGuRlR5TORvCEUksM459wKUA=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "fdc7b8f7b30fdbedec91b71ed82f36e1637483ed",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777268161,
|
"lastModified": 1777268161,
|
||||||
"narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
|
"narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
|
||||||
@@ -226,13 +309,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778869304,
|
"lastModified": 1779536132,
|
||||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
"narHash": "sha256-q+fF42iv/geEbHfgSzy3tS0FF/EyD6XTZ98E6yxiBO8=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
"rev": "3d8f0f3f72a6cd4d93d0ad13203f2ea1cb7e1456",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -245,10 +328,12 @@
|
|||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"azos-core": "azos-core",
|
"azos-core": "azos-core",
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"import-tree": "import-tree_2",
|
||||||
"musnix": "musnix",
|
"musnix": "musnix",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,14 +2,7 @@
|
|||||||
description = "Aner's NIX config for his systems!";
|
description = "Aner's NIX config for his systems!";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# self.submodules = true;
|
|
||||||
# Nixpkgs
|
|
||||||
#Temporarily
|
|
||||||
# nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
|
||||||
#Need unstable for opencode and agent-shell
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
# Unused unstable
|
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
@@ -19,58 +12,41 @@
|
|||||||
|
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
|
||||||
#Music production nix
|
|
||||||
musnix = {url = "github:musnix/musnix";};
|
musnix = {url = "github:musnix/musnix";};
|
||||||
|
|
||||||
azos-core = {
|
azos-core = {
|
||||||
url = "./azos-core";
|
url = "./azos-core";
|
||||||
flake = true;
|
flake = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
|
import-tree.url = "github:vic/import-tree";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = inputs:
|
||||||
self,
|
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
|
||||||
nixpkgs,
|
imports = [
|
||||||
home-manager,
|
inputs.azos-core.flakeModules.default
|
||||||
...
|
./overlays/default.nix
|
||||||
} @ inputs: let
|
(inputs.import-tree ./features)
|
||||||
inherit (self) outputs;
|
./_machines/lauretta.nix
|
||||||
|
./_machines/vm.nix
|
||||||
|
];
|
||||||
|
|
||||||
systems = [
|
systems = [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
"aarch64-darwin"
|
"aarch64-darwin"
|
||||||
"x86_64-darwin"
|
"x86_64-darwin"
|
||||||
];
|
];
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
|
||||||
in {
|
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
|
||||||
|
|
||||||
overlays = import ./overlays {inherit inputs;};
|
perSystem = {
|
||||||
azos-core.nixosModules = inputs.azos-core.nixosModules.nixosModules;
|
system,
|
||||||
nixosModules = import ./modules/nixos;
|
pkgs,
|
||||||
azos-core.homeManagerModules = inputs.azos-core.nixosModules.homeManagerModules;
|
...
|
||||||
homeManagerModules = import ./modules/home-manager;
|
}: {
|
||||||
|
formatter = pkgs.alejandra;
|
||||||
#Systems configured
|
devShells = (import ./shells) {inherit pkgs;};
|
||||||
nixosConfigurations = {
|
|
||||||
#Lauretta - laptop
|
|
||||||
lauretta = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {inherit inputs outputs;};
|
|
||||||
modules = [
|
|
||||||
./nixos/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#Test VM
|
|
||||||
vm = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {inherit inputs outputs;};
|
|
||||||
modules = [
|
|
||||||
./nixos/configuration-vm.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#TODO the devshells do not know of the new packages.
|
|
||||||
devShells = forAllSystems (system: ((import ./shells) {pkgs = nixpkgs.legacyPackages.${system};}));
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-6
@@ -1,16 +1,35 @@
|
|||||||
# This is your home-manager configuration file
|
|
||||||
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
|
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
outputs,
|
outputs,
|
||||||
|
suiteModules,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
outputs.homeManagerModules
|
suiteModules.homeManager.base
|
||||||
outputs.azos-core.homeManagerModules
|
suiteModules.homeManager.dev
|
||||||
|
suiteModules.homeManager.editor
|
||||||
|
suiteModules.homeManager.station
|
||||||
|
suiteModules.homeManager.exwm
|
||||||
|
suiteModules.homeManager.lauretta
|
||||||
|
suiteModules.homeManager.audio
|
||||||
|
suiteModules.homeManager.claude
|
||||||
|
suiteModules.homeManager.encryption
|
||||||
|
suiteModules.homeManager.git-config
|
||||||
|
suiteModules.homeManager.hfsprogs
|
||||||
|
suiteModules.homeManager.headphones
|
||||||
|
suiteModules.homeManager.hyprland
|
||||||
|
suiteModules.homeManager.kubernetes
|
||||||
|
suiteModules.homeManager.mail
|
||||||
|
suiteModules.homeManager.mpris-proxy
|
||||||
|
suiteModules.homeManager.nextcloud
|
||||||
|
suiteModules.homeManager.opencode
|
||||||
|
suiteModules.homeManager.qutebrowser
|
||||||
|
suiteModules.homeManager.reaper
|
||||||
|
suiteModules.homeManager.snx-rs
|
||||||
|
suiteModules.homeManager.ytdl
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
@@ -28,9 +47,7 @@
|
|||||||
homeDirectory = "/home/aner";
|
homeDirectory = "/home/aner";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Nicely reload system units when changing configs
|
|
||||||
systemd.user.startServices = "sd-switch";
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
|
||||||
home.stateVersion = "25.11";
|
home.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.home-audio.enable;
|
|
||||||
in {
|
|
||||||
options.azos.home-audio.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
# home.packages = with pkgs; [pavucontrol];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.claude.enable;
|
|
||||||
in {
|
|
||||||
options.azos.claude.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [claude-code claude-agent-acp];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./audio.nix
|
|
||||||
./claude.nix
|
|
||||||
./encryption.nix
|
|
||||||
./git.nix
|
|
||||||
./hfsprogs.nix
|
|
||||||
./headphones-whmx4000.nix
|
|
||||||
./hyprland-suite.nix
|
|
||||||
./kubernetes.nix
|
|
||||||
./lauretta-emacs.nix
|
|
||||||
./mail.nix
|
|
||||||
./mpris-proxy.nix
|
|
||||||
./opencode.nix
|
|
||||||
# ./printing.nix
|
|
||||||
# ./gnuradio.nix
|
|
||||||
./qutebrowser-config.nix
|
|
||||||
./reaper.nix
|
|
||||||
./snx-rs.nix
|
|
||||||
./ytdl.nix
|
|
||||||
./nextcloud-client.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.encryption.enable;
|
|
||||||
in {
|
|
||||||
options.azos.encryption.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.git-config.enable;
|
|
||||||
in {
|
|
||||||
options.azos.git-config.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.gnuradio.enable;
|
|
||||||
in {
|
|
||||||
options.azos.gnuradio.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
gnuradio
|
|
||||||
uhd
|
|
||||||
gmp
|
|
||||||
boost
|
|
||||||
volk
|
|
||||||
libxcursor
|
|
||||||
cmake
|
|
||||||
pkg-config
|
|
||||||
spdlog
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.headphones-whmx4000.enable;
|
|
||||||
in {
|
|
||||||
options.azos.headphones-whmx4000.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(pkgs.writeShellScriptBin
|
|
||||||
"azos-connect-headphones-whmx4000"
|
|
||||||
"echo \"connect AC:80:0A:AF:E1:C2\" | bluetoothctl")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.hfsprogs.enable;
|
|
||||||
in {
|
|
||||||
options.azos.hfsprogs.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hfsprogs
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
options,
|
|
||||||
azos-utils,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.suites.hyprland.enable;
|
|
||||||
in {
|
|
||||||
options.azos.suites.hyprland.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
#TODO shutdown reboot commands
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hyprland
|
|
||||||
waybar # status bar
|
|
||||||
wofi # application launcher
|
|
||||||
kitty
|
|
||||||
grim # screenshot utility
|
|
||||||
slurp # region selector
|
|
||||||
swappy # screenshot editor
|
|
||||||
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
|
|
||||||
'';
|
|
||||||
#Make executable
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# systemd.user.services.xwayland = {
|
|
||||||
# Unit.Description = "XWayland server";
|
|
||||||
# Install.WantedBy = [ "default.target" ];
|
|
||||||
# Service = {
|
|
||||||
# ExecStart = "${pkgs.xwayland}/bin/Xwayland :0 -rootless -terminate -listen tcp";
|
|
||||||
# Restart = "on-failure";
|
|
||||||
# RestartSec = "1s";
|
|
||||||
# StandardInput = "null";
|
|
||||||
# StandardOutput = "null";
|
|
||||||
# StandardError = "journal";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.kubectl.enable;
|
|
||||||
in {
|
|
||||||
options.azos.kubectl.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
kubectl
|
|
||||||
kubernetes-helm
|
|
||||||
velero
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
azos-utils,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.emacs.enable && config.azos.suites.lauretta.enable;
|
|
||||||
emacspkgs = config.azos.emacs.emacspkg.pkgs;
|
|
||||||
localPkgName = "azos-emacs-lauretta";
|
|
||||||
in {
|
|
||||||
#Set config
|
|
||||||
options.azos.suites.lauretta.enable = azos-utils.mkSuiteEnableOption {};
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
azos.emacs.enabledSuites = [localPkgName];
|
|
||||||
|
|
||||||
#Base emacs suite definition
|
|
||||||
azos.emacs.pkgs = [pkgs.azos-emacs-lauretta];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [pkgs.nix-search-cli];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
#https://xeiaso.net/talks/asg-2023-nixos/ example
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.mail.enable;
|
|
||||||
default_account_params = {
|
|
||||||
realName = "Aner Zakobar";
|
|
||||||
notmuch.enable = true;
|
|
||||||
mbsync = {
|
|
||||||
enable = true;
|
|
||||||
create = "maildir";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
default_gmail_params =
|
|
||||||
default_account_params
|
|
||||||
// {
|
|
||||||
# lieer.enable = true;
|
|
||||||
# lieer.sync.enable = true;
|
|
||||||
flavor = "gmail.com";
|
|
||||||
# imap = {
|
|
||||||
# host = "mail.privateemail.com";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
default_smtp = {
|
|
||||||
tls = {
|
|
||||||
enable = true;
|
|
||||||
certificatesFile = "/etc/ssl/certs/ca-certificates.crt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
default_gmail_smtp =
|
|
||||||
default_smtp
|
|
||||||
// {
|
|
||||||
host = "smtp.gmail.com";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
options.azos.mail.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
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";
|
|
||||||
# smtp = default_gmail_smtp;
|
|
||||||
passwordCommand = "pass gmail.com/mbsync-anerisgreat";
|
|
||||||
};
|
|
||||||
bgu =
|
|
||||||
default_gmail_params
|
|
||||||
// {
|
|
||||||
address = "anerz@post.bgu.ac.il";
|
|
||||||
userName = "anerz@post.bgu.ac.il";
|
|
||||||
# smtp = default_gmail_smtp;
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
# mbsync = {
|
|
||||||
# enable = true;
|
|
||||||
# create = "maildir";
|
|
||||||
# };
|
|
||||||
|
|
||||||
smtp =
|
|
||||||
default_smtp
|
|
||||||
// {
|
|
||||||
port = 587;
|
|
||||||
host = "mail.privateemail.com";
|
|
||||||
};
|
|
||||||
passwordCommand = "pass zakobar.com/mail/aner";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#https://xeiaso.net/talks/asg-2023-nixos/ example
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.mpris-proxy.enable;
|
|
||||||
in {
|
|
||||||
options.azos.mpris-proxy.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
services.mpris-proxy.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.nextcloud-client.enable;
|
|
||||||
in {
|
|
||||||
options.azos.nextcloud-client.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nextcloud-client
|
|
||||||
];
|
|
||||||
services.nextcloud-client = {
|
|
||||||
enable = true;
|
|
||||||
startInBackground = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.opencode.enable;
|
|
||||||
in {
|
|
||||||
options.azos.opencode.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
programs.opencode.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.printing.enable;
|
|
||||||
in {
|
|
||||||
options.azos.printing.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
services.printing.enable = true;
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hplip
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.qutebrowser-config.enable;
|
|
||||||
in {
|
|
||||||
options.azos.qutebrowser-config.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.file.".config/qutebrowser/config.py".source = ./qutebrowser-config.py;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.reaper.enable;
|
|
||||||
in {
|
|
||||||
options.azos.reaper.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
reaper
|
|
||||||
helm #TODO this synth had better work
|
|
||||||
# surge
|
|
||||||
lsp-plugins
|
|
||||||
vital
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.snx-rs.enable;
|
|
||||||
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 (e.g., vpn, vpn_Microsoft_Authenticator)";
|
|
||||||
};
|
|
||||||
ignoreServerCert = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = "Ignore server certificate validation";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
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}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.ytdl.enable;
|
|
||||||
in {
|
|
||||||
options.azos.ytdl.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
yt-dlp
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.hardware-audio.enable;
|
|
||||||
in {
|
|
||||||
options.azos.hardware-audio.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
services = {
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
audio.enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
environment.systemPackages = with pkgs; [pavucontrol];
|
|
||||||
musnix.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.binfmt.enable;
|
|
||||||
in {
|
|
||||||
options.azos.binfmt.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.bluetooth.enable;
|
|
||||||
in {
|
|
||||||
options.azos.bluetooth.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
services.blueman.enable = true;
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [./audio.nix ./binfmt.nix ./bluetooth.nix ./steam.nix ./virtualization.nix];
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.steam.enable;
|
|
||||||
in {
|
|
||||||
options.azos.steam.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
programs.steam.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEnabled =
|
|
||||||
config.azos.virtualization.enable;
|
|
||||||
in {
|
|
||||||
options.azos.virtualization.enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true; # start / run libvirtd as a system service
|
|
||||||
# optional: expose the default NAT network (virbr0) – libvirtd creates it
|
|
||||||
# automatically when the daemon is on, but we make sure the bridge is
|
|
||||||
# allowed through the firewall.
|
|
||||||
qemu = {
|
|
||||||
swtpm.enable = true; # (optional) enable software TPM for guests
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# QEMU (KVM‑accelerated)
|
|
||||||
qemu_kvm # same as pkgs.qemu (but with KVM support explicitly enabled)
|
|
||||||
# CLI utilities
|
|
||||||
libvirt # provides virsh, virt-install, virt-manager (cli bits)
|
|
||||||
# GUI front‑end
|
|
||||||
virt-manager # graphical manager (uses libvirt + spice)
|
|
||||||
virt-viewer # Spice/VNC client that virt‑manager calls under the hood
|
|
||||||
];
|
|
||||||
|
|
||||||
services.spice-vdagentd.enable = true; # makes copy‑paste & auto‑resize work in Spice windows
|
|
||||||
networking.firewall.allowedTCPPorts = [5900 5901]; # Spice ports (adjust if you expose elsewhere)
|
|
||||||
networking.firewall.allowedUDPPorts = [5900 5901];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,53 +1,42 @@
|
|||||||
# This is your system's configuration file.
|
|
||||||
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
|
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
outputs,
|
outputs,
|
||||||
|
suiteModules,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
# You can import other NixOS modules here
|
|
||||||
|
|
||||||
virtualisation.vmVariant = {
|
virtualisation.vmVariant = {
|
||||||
virtualisation.resolution = {
|
virtualisation.resolution = {
|
||||||
x = 1280;
|
x = 1280;
|
||||||
y = 1024;
|
y = 1024;
|
||||||
};
|
};
|
||||||
virtualisation.qemu.options = [
|
virtualisation.qemu.options = [
|
||||||
# Better display option
|
|
||||||
"-vga virtio"
|
"-vga virtio"
|
||||||
"-display gtk,zoom-to-fit=false"
|
"-display gtk,zoom-to-fit=false"
|
||||||
# Enable copy/paste
|
|
||||||
# https://www.kraxel.org/blog/2021/05/qemu-cut-paste/
|
|
||||||
"-chardev qemu-vdagent,id=ch1,name=vdagent,clipboard=on"
|
"-chardev qemu-vdagent,id=ch1,name=vdagent,clipboard=on"
|
||||||
"-device virtio-serial-pci"
|
"-device virtio-serial-pci"
|
||||||
"-device virtserialport,chardev=ch1,id=ch1,name=com.redhat.spice.0"
|
"-device virtserialport,chardev=ch1,id=ch1,name=com.redhat.spice.0"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
outputs.nixosModules
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.azos-core.overlays.addpkgs
|
outputs.overlays.addpkgs
|
||||||
# outputs.overlays.additions
|
|
||||||
# outputs.overlays.modifications
|
|
||||||
# outputs.overlays.unstable-packages
|
|
||||||
];
|
];
|
||||||
# Configure your nixpkgs instance
|
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
||||||
|
|
||||||
nix.nixPath = ["/etc/nix/path"];
|
nix.nixPath = ["/etc/nix/path"];
|
||||||
environment.etc =
|
environment.etc =
|
||||||
lib.mapAttrs'
|
lib.mapAttrs'
|
||||||
@@ -59,21 +48,17 @@
|
|||||||
|
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
experimental-features = "nix-command flakes";
|
experimental-features = "nix-command flakes";
|
||||||
# Deduplicate and optimize nix store
|
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: Set your hostname
|
|
||||||
networking.hostName = "test-vm";
|
networking.hostName = "test-vm";
|
||||||
|
|
||||||
# TODO: This is just an example, be sure to use whatever bootloader you prefer
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {inherit inputs outputs;};
|
extraSpecialArgs = {inherit inputs outputs suiteModules pkgs;};
|
||||||
users = {
|
users = {
|
||||||
# Import your home-manager configuration
|
|
||||||
aner = import ../home-manager/home.nix;
|
aner = import ../home-manager/home.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -82,28 +67,18 @@
|
|||||||
aner = {
|
aner = {
|
||||||
initialPassword = "password";
|
initialPassword = "password";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [];
|
||||||
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
|
|
||||||
];
|
|
||||||
# TODO: Be sure to add any other groups you need (such as networkmanager, audio, docker, etc)
|
|
||||||
extraGroups = ["wheel" "libvirtd"];
|
extraGroups = ["wheel" "libvirtd"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# This setups a SSH server. Very important if you're setting up a headless system.
|
|
||||||
# Feel free to remove if you don't need it.
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
# Forbid root login through SSH.
|
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
# Use keys only. Remove if you want to SSH using password (not recommended)
|
|
||||||
PasswordAuthentication = true;
|
PasswordAuthentication = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#Graphical environment
|
|
||||||
# services.xserver.desktopManager.xfce.enable = true;
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-23
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
outputs,
|
outputs,
|
||||||
|
suiteModules,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
@@ -11,20 +12,22 @@
|
|||||||
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t480
|
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t480
|
||||||
inputs.musnix.nixosModules.musnix
|
inputs.musnix.nixosModules.musnix
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
outputs.nixosModules
|
suiteModules.nixos.base
|
||||||
outputs.azos-core.nixosModules
|
suiteModules.nixos.exwm
|
||||||
|
suiteModules.nixos.audio
|
||||||
|
suiteModules.nixos.bluetooth
|
||||||
|
suiteModules.nixos.steam
|
||||||
|
suiteModules.nixos.virtualization
|
||||||
|
suiteModules.nixos.binfmt
|
||||||
];
|
];
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.azos-core.overlays.addpkgs
|
|
||||||
outputs.overlays.addpkgs
|
outputs.overlays.addpkgs
|
||||||
inputs.azos-core.overlays.qutebrowserdrm
|
outputs.overlays.qutebrowserdrm
|
||||||
outputs.overlays.modifications
|
outputs.overlays.modifications
|
||||||
outputs.overlays.unstable-packages
|
outputs.overlays.unstable-packages
|
||||||
];
|
];
|
||||||
@@ -34,20 +37,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
||||||
|
|
||||||
nix.nixPath = ["/etc/nix/path"];
|
nix.nixPath = ["/etc/nix/path"];
|
||||||
|
|
||||||
networking.hostName = "lauretta"; # Define your hostname.
|
networking.hostName = "lauretta";
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Asia/Jerusalem";
|
time.timeZone = "Asia/Jerusalem";
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_IL";
|
i18n.defaultLocale = "en_IL";
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
i18n.extraLocaleSettings = {
|
||||||
LC_ADDRESS = "he_IL.UTF-8";
|
LC_ADDRESS = "he_IL.UTF-8";
|
||||||
LC_IDENTIFICATION = "he_IL.UTF-8";
|
LC_IDENTIFICATION = "he_IL.UTF-8";
|
||||||
@@ -60,7 +57,6 @@
|
|||||||
LC_TIME = "he_IL.UTF-8";
|
LC_TIME = "he_IL.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
xkb = {
|
xkb = {
|
||||||
layout = "us,il";
|
layout = "us,il";
|
||||||
@@ -69,14 +65,11 @@
|
|||||||
xkb.options = "grp:alt_shift_toggle";
|
xkb.options = "grp:alt_shift_toggle";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure console keymap
|
|
||||||
console.keyMap = "il";
|
console.keyMap = "il";
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.aner = {
|
users.users.aner = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "Aner Zakobar";
|
description = "Aner Zakobar";
|
||||||
#Audio group for audio config, video group necessary for backlight.
|
|
||||||
extraGroups = ["networkmanager" "wheel" "audio" "video"];
|
extraGroups = ["networkmanager" "wheel" "audio" "video"];
|
||||||
packages = with pkgs; [];
|
packages = with pkgs; [];
|
||||||
};
|
};
|
||||||
@@ -89,17 +82,15 @@
|
|||||||
azos.suites.exwm.enable = true;
|
azos.suites.exwm.enable = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {inherit inputs outputs pkgs;};
|
extraSpecialArgs = {inherit inputs outputs suiteModules pkgs;};
|
||||||
users = {
|
users = {
|
||||||
aner = import ../home-manager/home.nix;
|
aner = import ../home-manager/home.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Specializations
|
|
||||||
specialisation = {
|
specialisation = {
|
||||||
hyprland = {
|
hyprland = {
|
||||||
configuration = {
|
configuration = {
|
||||||
# Override home‑manager options for this specialization
|
|
||||||
home-manager.users.aner = {pkgs, ...}: {
|
home-manager.users.aner = {pkgs, ...}: {
|
||||||
azos.suites.exwm.enable = lib.mkForce false;
|
azos.suites.exwm.enable = lib.mkForce false;
|
||||||
azos.suites.hyprland.enable = true;
|
azos.suites.hyprland.enable = true;
|
||||||
@@ -108,8 +99,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
boot.supportedFilesystems = ["exfat"];
|
boot.supportedFilesystems = ["exfat"];
|
||||||
boot.kernelModules = ["exfat"];
|
boot.kernelModules = ["exfat"];
|
||||||
|
|
||||||
@@ -131,5 +120,5 @@
|
|||||||
systemd.targets.hibernate.enable = false;
|
systemd.targets.hibernate.enable = false;
|
||||||
systemd.targets.hybrid-sleep.enable = false;
|
systemd.targets.hybrid-sleep.enable = false;
|
||||||
|
|
||||||
system.stateVersion = "25.11"; # Did you read the comment?
|
system.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-15
@@ -1,22 +1,11 @@
|
|||||||
# This file defines overlays
|
|
||||||
{inputs, ...}: {
|
{inputs, ...}: {
|
||||||
addpkgs = final: _prev: (import ../pkgs {pkgs = final.pkgs;});
|
config.flake.overlays.modifications = _final: prev: {
|
||||||
|
helm = prev.helm.overrideAttrs (oldAttrs: {
|
||||||
#Current overlay is for helm, to disable binary, so no conflict
|
patches = oldAttrs.patches or [] ++ [./helm.patch];
|
||||||
modifications = final: prev: {
|
|
||||||
helm = prev.helm.overrideAttrs (oldAttrs: rec {
|
|
||||||
patches =
|
|
||||||
oldAttrs.patches
|
|
||||||
or []
|
|
||||||
++ [
|
|
||||||
./helm.patch
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
|
config.flake.overlays.unstable-packages = final: _prev: {
|
||||||
# be accessible through 'pkgs.unstable'
|
|
||||||
unstable-packages = final: _prev: {
|
|
||||||
unstable = import inputs.nixpkgs-unstable {
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
system = final.system;
|
system = final.system;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{pkgs} @ args: let
|
|
||||||
inherit args;
|
|
||||||
localEmacsPkg = pkgs.localEmacsPkg;
|
|
||||||
in {
|
|
||||||
azos-emacs-lauretta = localEmacsPkg ./azos-emacs-lauretta.nix;
|
|
||||||
azos-emacs-hyprland = localEmacsPkg ./azos-emacs-hyprland.nix;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user