Refractor to dendritic approach.

This commit is contained in:
2026-05-24 19:24:38 +03:00
parent d4dee59413
commit fcb7e0b884
68 changed files with 774 additions and 942 deletions
+14
View File
@@ -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];
};
}
+14
View File
@@ -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];
};
}
+41
View File
@@ -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;
};
};
}
+15
View File
@@ -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"];
};
};
}
+16
View File
@@ -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;
};
};
}
+16
View File
@@ -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];
};
};
}
+37
View File
@@ -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;
};
};
}
+32
View File
@@ -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;
};
};
}
+20
View File
@@ -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")
];
};
};
}
+16
View File
@@ -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];
};
};
}
+36
View File
@@ -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 {
pname = "azos-emacs-hyprland";
version = "0.1.6";
src = ./elisp/azos-emacs-hyprland.org;
src = ./config.org;
packageRequires = with epkgs; [
pkgs.azos-emacs-base
];
+3
View File
@@ -0,0 +1,3 @@
{...}: {
config.flake.overlayPkgs.azos-emacs-hyprland = pkgs: pkgs.localEmacsPkg ./_pkg.nix;
}
+16
View File
@@ -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];
};
};
}
+18
View File
@@ -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 {
pname = "azos-emacs-lauretta";
version = "0.1.6";
src = ./elisp/azos-emacs-lauretta.org;
src = ./config.org;
packageRequires = with epkgs; [
pkgs.azos-emacs-base
pkgs.azos-emacs-dev
+3
View File
@@ -0,0 +1,3 @@
{...}: {
config.flake.overlayPkgs.azos-emacs-lauretta = pkgs: pkgs.localEmacsPkg ./_pkg.nix;
}
+76
View File
@@ -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";
};
};
};
};
}
+15
View File
@@ -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;
};
};
}
+20
View File
@@ -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;
};
};
};
}
+15
View File
@@ -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;
};
};
}
+15
View File
@@ -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;
};
};
}
+21
View File
@@ -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
];
};
};
}
+61
View File
@@ -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}
'';
};
};
};
}
+15
View File
@@ -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;
};
};
}
+30
View File
@@ -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];
};
};
}
+16
View File
@@ -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
View File
@@ -4,7 +4,8 @@
"inputs": {
"cabata": "cabata",
"evil-hl-line": "evil-hl-line",
"nixpkgs": "nixpkgs_3"
"flake-parts": "flake-parts",
"import-tree": "import-tree"
},
"locked": {
"path": "./azos-core",
@@ -23,11 +24,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1771368993,
"narHash": "sha256-mWcLaCViNfUMPcqCvQRed4kR20Ifs8aaHcjMlVbF2tQ=",
"lastModified": 1779008956,
"narHash": "sha256-jpJ30XX1pAH+Mpsyj92K8t6812Qs+P4J31wO7RS/e+Y=",
"owner": "anerisgreat",
"repo": "cabata",
"rev": "4fa661795527fa437698409395dc4363fbc0adf0",
"rev": "ff1871152ffb635e18e1a9804750192c6969d1cb",
"type": "github"
},
"original": {
@@ -55,6 +56,42 @@
"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": {
"inputs": {
"systems": [
@@ -102,11 +139,11 @@
]
},
"locked": {
"lastModified": 1778954430,
"narHash": "sha256-oaNyOr05lblaQdtbkbN1wO0b2KLIL2O1LkmwDgdQp4I=",
"lastModified": 1779627636,
"narHash": "sha256-J6JGf42zNzLo/CrRdKb5dNznpLI+eGxN/5KTLG1Mo5s=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "26aaab785b0bab4af60a2c42b22760fa906ef22a",
"rev": "044c30c19550c0557997dece4ce9e54d2fa77ba1",
"type": "github"
},
"original": {
@@ -116,9 +153,39 @@
"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": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1777848538,
@@ -136,11 +203,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1778945272,
"narHash": "sha256-Aipz0UiBhE2a1FYJrNc2y+5vKWo5QVkhmaIJk3/ls+g=",
"lastModified": 1779258371,
"narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "379c1f274f0fa354d012f0600806de54e79f29b5",
"rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77",
"type": "github"
},
"original": {
@@ -164,13 +231,43 @@
"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": {
"locked": {
"lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
"lastModified": 1779508470,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
"rev": "29916453413845e54a65b8a1cf996842300cd299",
"type": "github"
},
"original": {
@@ -182,11 +279,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1778443072,
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=",
"lastModified": 1779508470,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32",
"rev": "29916453413845e54a65b8a1cf996842300cd299",
"type": "github"
},
"original": {
@@ -197,20 +294,6 @@
}
},
"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": {
"lastModified": 1777268161,
"narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
@@ -226,13 +309,13 @@
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_4": {
"locked": {
"lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
"lastModified": 1779536132,
"narHash": "sha256-q+fF42iv/geEbHfgSzy3tS0FF/EyD6XTZ98E6yxiBO8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
"rev": "3d8f0f3f72a6cd4d93d0ad13203f2ea1cb7e1456",
"type": "github"
},
"original": {
@@ -245,10 +328,12 @@
"root": {
"inputs": {
"azos-core": "azos-core",
"flake-parts": "flake-parts_2",
"home-manager": "home-manager",
"import-tree": "import-tree_2",
"musnix": "musnix",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_5",
"nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable"
}
},
+25 -49
View File
@@ -2,14 +2,7 @@
description = "Aner's NIX config for his systems!";
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";
# Unused unstable
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
@@ -19,58 +12,41 @@
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
#Music production nix
musnix = {url = "github:musnix/musnix";};
azos-core = {
url = "./azos-core";
flake = true;
};
flake-parts.url = "github:hercules-ci/flake-parts";
import-tree.url = "github:vic/import-tree";
};
outputs = {
self,
nixpkgs,
home-manager,
...
} @ inputs: let
inherit (self) outputs;
systems = [
"aarch64-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
forAllSystems = nixpkgs.lib.genAttrs systems;
in {
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
inputs.azos-core.flakeModules.default
./overlays/default.nix
(inputs.import-tree ./features)
./_machines/lauretta.nix
./_machines/vm.nix
];
overlays = import ./overlays {inherit inputs;};
azos-core.nixosModules = inputs.azos-core.nixosModules.nixosModules;
nixosModules = import ./modules/nixos;
azos-core.homeManagerModules = inputs.azos-core.nixosModules.homeManagerModules;
homeManagerModules = import ./modules/home-manager;
systems = [
"aarch64-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
#Systems configured
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
];
perSystem = {
system,
pkgs,
...
}: {
formatter = pkgs.alejandra;
devShells = (import ./shells) {inherit pkgs;};
};
};
#TODO the devshells do not know of the new packages.
devShells = forAllSystems (system: ((import ./shells) {pkgs = nixpkgs.legacyPackages.${system};}));
};
}
+23 -6
View File
@@ -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,
outputs,
suiteModules,
lib,
config,
pkgs,
...
}: {
imports = [
outputs.homeManagerModules
outputs.azos-core.homeManagerModules
suiteModules.homeManager.base
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;
@@ -28,9 +47,7 @@
homeDirectory = "/home/aner";
};
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "25.11";
}
-19
View File
@@ -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];
};
}
-19
View File
@@ -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];
};
}
-23
View File
@@ -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
];
}
-42
View File
@@ -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;
};
}
-38
View File
@@ -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;
};
}
-29
View File
@@ -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")
];
};
}
-20
View File
@@ -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
];
};
}
-58
View File
@@ -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";
# };
# };
};
}
-23
View File
@@ -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
];
};
}
-23
View File
@@ -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];
};
}
-108
View File
@@ -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";
};
};
};
}
-20
View File
@@ -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;
};
}
-25
View File
@@ -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;
};
};
}
-19
View File
@@ -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;
};
}
-22
View File
@@ -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;
};
}
-25
View File
@@ -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
];
};
}
-63
View File
@@ -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}
'';
};
};
}
-21
View File
@@ -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
];
};
}
-33
View File
@@ -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;
};
}
-19
View File
@@ -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"];
};
}
-20
View File
@@ -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;
};
}
-3
View File
@@ -1,3 +0,0 @@
{
imports = [./audio.nix ./binfmt.nix ./bluetooth.nix ./steam.nix ./virtualization.nix];
}
-19
View File
@@ -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;
};
}
-40
View File
@@ -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 (KVMaccelerated)
qemu_kvm # same as pkgs.qemu (but with KVM support explicitly enabled)
# CLI utilities
libvirt # provides virsh, virt-install, virt-manager (cli bits)
# GUI frontend
virt-manager # graphical manager (uses libvirt + spice)
virt-viewer # Spice/VNC client that virtmanager calls under the hood
];
services.spice-vdagentd.enable = true; # makes copypaste & autoresize work in Spice windows
networking.firewall.allowedTCPPorts = [5900 5901]; # Spice ports (adjust if you expose elsewhere)
networking.firewall.allowedUDPPorts = [5900 5901];
};
}
+5 -30
View File
@@ -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,
outputs,
suiteModules,
lib,
config,
pkgs,
...
}: {
# You can import other NixOS modules here
virtualisation.vmVariant = {
virtualisation.resolution = {
x = 1280;
y = 1024;
};
virtualisation.qemu.options = [
# Better display option
"-vga virtio"
"-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"
"-device virtio-serial-pci"
"-device virtserialport,chardev=ch1,id=ch1,name=com.redhat.spice.0"
];
};
imports = [
inputs.home-manager.nixosModules.home-manager
outputs.nixosModules
];
nixpkgs.hostPlatform = "x86_64-linux";
nixpkgs = {
overlays = [
inputs.azos-core.overlays.addpkgs
# outputs.overlays.additions
# outputs.overlays.modifications
# outputs.overlays.unstable-packages
outputs.overlays.addpkgs
];
# Configure your nixpkgs instance
config = {
allowUnfree = true;
};
};
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
nix.nixPath = ["/etc/nix/path"];
environment.etc =
lib.mapAttrs'
@@ -59,21 +48,17 @@
nix.settings = {
experimental-features = "nix-command flakes";
# Deduplicate and optimize nix store
auto-optimise-store = true;
};
# TODO: Set your hostname
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.efi.canTouchEfiVariables = true;
home-manager = {
extraSpecialArgs = {inherit inputs outputs;};
extraSpecialArgs = {inherit inputs outputs suiteModules pkgs;};
users = {
# Import your home-manager configuration
aner = import ../home-manager/home.nix;
};
};
@@ -82,28 +67,18 @@
aner = {
initialPassword = "password";
isNormalUser = true;
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)
openssh.authorizedKeys.keys = [];
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 = {
enable = true;
settings = {
# Forbid root login through SSH.
PermitRootLogin = "no";
# Use keys only. Remove if you want to SSH using password (not recommended)
PasswordAuthentication = true;
};
};
#Graphical environment
# services.xserver.desktopManager.xfce.enable = true;
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = "24.05";
}
+12 -23
View File
@@ -1,6 +1,7 @@
{
inputs,
outputs,
suiteModules,
lib,
config,
pkgs,
@@ -11,20 +12,22 @@
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t480
inputs.musnix.nixosModules.musnix
inputs.home-manager.nixosModules.home-manager
outputs.nixosModules
outputs.azos-core.nixosModules
suiteModules.nixos.base
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.efi.canTouchEfiVariables = true;
boot.binfmt.emulatedSystems = ["aarch64-linux"];
nixpkgs = {
overlays = [
inputs.azos-core.overlays.addpkgs
outputs.overlays.addpkgs
inputs.azos-core.overlays.qutebrowserdrm
outputs.overlays.qutebrowserdrm
outputs.overlays.modifications
outputs.overlays.unstable-packages
];
@@ -34,20 +37,14 @@
};
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
nix.nixPath = ["/etc/nix/path"];
networking.hostName = "lauretta"; # Define your hostname.
# Enable networking
networking.hostName = "lauretta";
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Asia/Jerusalem";
# Select internationalisation properties.
i18n.defaultLocale = "en_IL";
i18n.extraLocaleSettings = {
LC_ADDRESS = "he_IL.UTF-8";
LC_IDENTIFICATION = "he_IL.UTF-8";
@@ -60,7 +57,6 @@
LC_TIME = "he_IL.UTF-8";
};
# Configure keymap in X11
services.xserver = {
xkb = {
layout = "us,il";
@@ -69,14 +65,11 @@
xkb.options = "grp:alt_shift_toggle";
};
# Configure console keymap
console.keyMap = "il";
# Define a user account. Don't forget to set a password with passwd.
users.users.aner = {
isNormalUser = true;
description = "Aner Zakobar";
#Audio group for audio config, video group necessary for backlight.
extraGroups = ["networkmanager" "wheel" "audio" "video"];
packages = with pkgs; [];
};
@@ -89,17 +82,15 @@
azos.suites.exwm.enable = true;
home-manager = {
extraSpecialArgs = {inherit inputs outputs pkgs;};
extraSpecialArgs = {inherit inputs outputs suiteModules pkgs;};
users = {
aner = import ../home-manager/home.nix;
};
};
# Specializations
specialisation = {
hyprland = {
configuration = {
# Override homemanager options for this specialization
home-manager.users.aner = {pkgs, ...}: {
azos.suites.exwm.enable = lib.mkForce false;
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.kernelModules = ["exfat"];
@@ -131,5 +120,5 @@
systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false;
system.stateVersion = "25.11"; # Did you read the comment?
system.stateVersion = "25.11";
}
+4 -15
View File
@@ -1,22 +1,11 @@
# This file defines overlays
{inputs, ...}: {
addpkgs = final: _prev: (import ../pkgs {pkgs = final.pkgs;});
#Current overlay is for helm, to disable binary, so no conflict
modifications = final: prev: {
helm = prev.helm.overrideAttrs (oldAttrs: rec {
patches =
oldAttrs.patches
or []
++ [
./helm.patch
];
config.flake.overlays.modifications = _final: prev: {
helm = prev.helm.overrideAttrs (oldAttrs: {
patches = oldAttrs.patches or [] ++ [./helm.patch];
});
};
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
# be accessible through 'pkgs.unstable'
unstable-packages = final: _prev: {
config.flake.overlays.unstable-packages = final: _prev: {
unstable = import inputs.nixpkgs-unstable {
system = final.system;
config.allowUnfree = true;
-7
View File
@@ -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;
}