summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradikro <adikro@disroot.org>2025-12-20 03:14:45 +0100
committeradikro <adikro@disroot.org>2025-12-20 03:14:45 +0100
commit791bc419b6dac7c70951981ef6b34cdf85828470 (patch)
tree56d0962fdf829ae942feb1344763e54dbc3c89a3
parente60410393cea222b16743a1a87f29c06b9b3543b (diff)
absolutely massive rewrite, made (almost) everything modular with changes to come
-rw-r--r--flake.lock62
-rw-r--r--flake.nix22
-rw-r--r--hm/conf/clip.nix32
-rw-r--r--hm/conf/conf.nix9
-rw-r--r--hm/conf/git.nix18
-rw-r--r--hm/conf/ssh.nix11
-rw-r--r--hm/conf/xdg-dirs.nix51
-rw-r--r--hm/default.nix10
-rw-r--r--hm/editors/editors.nix (renamed from modules/hm/editors/default.nix)2
-rw-r--r--hm/editors/helix.nix14
-rw-r--r--hm/editors/nixvim.nix107
-rw-r--r--hm/editors/nvf.nix48
-rw-r--r--hm/env/env.nix (renamed from modules/hm/wayland/default.nix)3
-rw-r--r--hm/env/niri/binds.nix98
-rw-r--r--hm/env/niri/niri.nix94
-rw-r--r--hm/env/theme.nix35
-rw-r--r--hm/env/waybar.nix13
-rw-r--r--hm/shell/cli.nix35
-rw-r--r--hm/shell/fish.nix69
-rw-r--r--hm/shell/foot.nix38
-rw-r--r--hm/shell/shell.nix (renamed from modules/hm/terminal/default.nix)3
-rw-r--r--hm/shell/starship.nix49
-rw-r--r--hm/soft/awww.nix14
-rw-r--r--hm/soft/easyeffects.nix13
-rw-r--r--hm/soft/fuzzel.nix13
-rw-r--r--hm/soft/gaming.nix12
-rw-r--r--hm/soft/media.nix27
-rw-r--r--hm/soft/nixcord.nix130
-rw-r--r--hm/soft/satty.nix13
-rw-r--r--hm/soft/soft.nix15
-rw-r--r--hm/soft/spicetify.nix24
-rw-r--r--hm/soft/swayidle.nix13
-rw-r--r--hm/soft/swaylock.nix14
-rw-r--r--hosts/desktop/configuration.nix138
-rw-r--r--hosts/desktop/home.nix89
-rw-r--r--hosts/laptop/configuration.nix0
-rw-r--r--hosts/laptop/disko.nix0
-rw-r--r--modules/hm/default.nix12
-rw-r--r--modules/hm/editors/helix.nix7
-rw-r--r--modules/hm/editors/nixvim.nix98
-rw-r--r--modules/hm/editors/nvf.nix42
-rw-r--r--modules/hm/git.nix11
-rw-r--r--modules/hm/programs/default.nix9
-rw-r--r--modules/hm/programs/nixcord.nix204
-rw-r--r--modules/hm/programs/spicetify.nix21
-rw-r--r--modules/hm/programs/yazi.nix7
-rw-r--r--modules/hm/terminal/btop.nix6
-rw-r--r--modules/hm/terminal/fish.nix62
-rw-r--r--modules/hm/terminal/foot.nix25
-rw-r--r--modules/hm/terminal/starship.nix111
-rw-r--r--modules/hm/terminal/utils.nix26
-rw-r--r--modules/hm/wayland/niri/binds.nix108
-rw-r--r--modules/hm/wayland/niri/default.nix7
-rw-r--r--modules/hm/wayland/niri/niri.nix72
-rw-r--r--modules/hm/wayland/waybar.nix151
-rw-r--r--modules/hm/xdg.nix34
-rw-r--r--modules/sys/core/bootloader.nix36
-rw-r--r--modules/sys/core/drivers.nix56
-rw-r--r--modules/sys/core/home-manager.nix30
-rw-r--r--modules/sys/core/localization.nix39
-rw-r--r--modules/sys/core/networking.nix29
-rw-r--r--modules/sys/default.nix8
-rw-r--r--modules/sys/features/default.nix8
-rw-r--r--modules/sys/features/ollama.nix21
-rw-r--r--modules/sys/features/virtualization.nix41
-rw-r--r--modules/sys/wayland/niri.nix20
-rw-r--r--sys/core/audio.nix (renamed from modules/sys/core/audio.nix)9
-rw-r--r--sys/core/bootloader.nix36
-rw-r--r--sys/core/core.nix (renamed from modules/sys/core/default.nix)0
-rw-r--r--sys/core/drivers.nix48
-rw-r--r--sys/core/fonts.nix (renamed from modules/sys/core/fonts.nix)7
-rw-r--r--sys/core/greet.nix (renamed from modules/sys/core/greet.nix)7
-rw-r--r--sys/core/home-manager.nix34
-rw-r--r--sys/core/localization.nix42
-rw-r--r--sys/core/networking.nix21
-rw-r--r--sys/core/security.nix (renamed from modules/sys/core/security.nix)15
-rw-r--r--sys/default.nix9
-rw-r--r--sys/pkgs/pkgs.nix (renamed from modules/hm/programs/satty.nix)0
-rw-r--r--sys/srv/compat.nix24
-rw-r--r--sys/srv/docker.nix15
-rw-r--r--sys/srv/files.nix44
-rw-r--r--sys/srv/gaming.nix50
-rw-r--r--sys/srv/kvm.nix21
-rw-r--r--sys/srv/nix-helper.nix (renamed from modules/sys/features/nh.nix)12
-rw-r--r--sys/srv/ollama.nix37
-rw-r--r--sys/srv/srv.nix12
-rw-r--r--sys/wm/niri.nix30
-rw-r--r--sys/wm/wm.nix (renamed from modules/sys/wayland/default.nix)0
88 files changed, 1603 insertions, 1509 deletions
diff --git a/flake.lock b/flake.lock
index 0d4348e..8889200 100644
--- a/flake.lock
+++ b/flake.lock
@@ -9,11 +9,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1765147877,
- "narHash": "sha256-SoSUY44s2nmg/SGriAIvXGSuVJBUvXlox5jhH1IeB9k=",
+ "lastModified": 1766150267,
+ "narHash": "sha256-LG+Q5yRZQ0WFO/XLWGtNGaR4XLiOgUZArEB4ZHl9sy0=",
"ref": "refs/heads/main",
- "rev": "45f9ad2ba04f2bb5656053bc1f285e060d571d79",
- "revCount": 1322,
+ "rev": "e52afbb27472935cc47ab2574ff7e9c22ddf7011",
+ "revCount": 1325,
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
},
@@ -232,11 +232,11 @@
]
},
"locked": {
- "lastModified": 1765980955,
- "narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=",
+ "lastModified": 1766171975,
+ "narHash": "sha256-47Ee0bTidhF/3/sHuYnWRuxcCrrm0mBNDxBkOTd3wWQ=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173",
+ "rev": "bb35f07cc95a73aacbaf1f7f46bb8a3f40f265b5",
"type": "github"
},
"original": {
@@ -277,11 +277,11 @@
]
},
"locked": {
- "lastModified": 1766016290,
- "narHash": "sha256-YMf/PUyY4z7RlIe/Dzn1NnxZGS0Vp2eHxcMNWJM9q+A=",
+ "lastModified": 1766189079,
+ "narHash": "sha256-K+xdRPIfIE8Xr3JHKNkVNnxPnihrPtW+D1rtcjHx1u4=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
- "rev": "f7fbc4e3d4ccea45eaa5b187884592eb42dfdbbd",
+ "rev": "7e47a8c64312e726aafc0789a5d9043501a7e3ae",
"type": "github"
},
"original": {
@@ -293,11 +293,11 @@
"neovim-src": {
"flake": false,
"locked": {
- "lastModified": 1766014002,
- "narHash": "sha256-KE/ufBGH8XFXTw3Vt1DrK1rQmAEp1Q+oyLQibX5UKO0=",
+ "lastModified": 1766187129,
+ "narHash": "sha256-SqvXXTi+nLihMFhHUT7/1JtNqWk2cMKiCvWxYKE03r8=",
"owner": "neovim",
"repo": "neovim",
- "rev": "c172fd9f464d5766eab9071e8f4770504c920c05",
+ "rev": "eac2f0443e032ba238ca6b4a9e2fd6135be454b3",
"type": "github"
},
"original": {
@@ -318,11 +318,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
- "lastModified": 1766058361,
- "narHash": "sha256-8GSS8I4AFlg8pzXDouVqsEQY0B562Q+esrRUwxVf47w=",
+ "lastModified": 1766191534,
+ "narHash": "sha256-qCW0niZEYnkJunetteb/OW2DQj50cX0jWGxe/9RUhQY=",
"owner": "sodiboo",
"repo": "niri-flake",
- "rev": "24123acf1301ee20a2bf6e63d0a19c54da1736ac",
+ "rev": "3630951ee49443f0301ddc432ddee1bfe62b9740",
"type": "github"
},
"original": {
@@ -351,11 +351,11 @@
"niri-unstable": {
"flake": false,
"locked": {
- "lastModified": 1766054370,
- "narHash": "sha256-0duo7mbAIBNEya28DXpCHMdTbVlVPyPn+ETBEA4QRbE=",
+ "lastModified": 1766085543,
+ "narHash": "sha256-96X+37m2HH8IG3BzXEN3d4eHeUbiu9g1Q+KJQRX/Jpw=",
"owner": "YaLTeR",
"repo": "niri",
- "rev": "f85cb5c5f97a6bd21cc6b3ac9671d32cca362bb2",
+ "rev": "c4462d0c7fddfc11c9e98d43e3ef68a5b3c844ca",
"type": "github"
},
"original": {
@@ -396,11 +396,11 @@
]
},
"locked": {
- "lastModified": 1766045567,
- "narHash": "sha256-w3w0PxcBMLFYE8MOAJwp6NeBWZUI3eykczV9MfJrAQ8=",
+ "lastModified": 1766190493,
+ "narHash": "sha256-UJEA2RLhXzcKFiTPDRJttLL522HfS0V27v16q4Bk2FI=",
"owner": "KaylorBen",
"repo": "nixcord",
- "rev": "2cc1a69f9b4a5c980c26ba4ba9dee252ebf0d218",
+ "rev": "d72b2c0fc75af068da3f3ac2d14011c4f7f0bd43",
"type": "github"
},
"original": {
@@ -474,11 +474,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1765779637,
- "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
+ "lastModified": 1766070988,
+ "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
+ "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8",
"type": "github"
},
"original": {
@@ -513,11 +513,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1766065187,
- "narHash": "sha256-1d6+VDO26pJzibS5xtANeD6C0e39W07xO4GUPsIwTpk=",
+ "lastModified": 1766168819,
+ "narHash": "sha256-4GN1ii4kexLgjR8KPmyY9R4V1JloYAJKZUhuz/ijT28=",
"owner": "nix-community",
"repo": "nixvim",
- "rev": "2a1f48e701bb11297432864ba4cadee3b886eba3",
+ "rev": "6013b67dc9ae84ca20a250d5c159efbc5dd242fc",
"type": "github"
},
"original": {
@@ -775,11 +775,11 @@
"rust-overlay": "rust-overlay_4"
},
"locked": {
- "lastModified": 1766074873,
- "narHash": "sha256-9rgKzbfF35IH71xxERqGtZwB2ZWmb9lECTXF3UOT7U4=",
+ "lastModified": 1766141198,
+ "narHash": "sha256-8oZTaxMknO2C/ojPp+ZI5XZi/J7TEeczYp7I4F5x/E8=",
"owner": "sxyazi",
"repo": "yazi",
- "rev": "e7cd66370fbc7786132c675999d026671ac364a6",
+ "rev": "329c5d28f097dc78c10b436e3df2ab5086d382e7",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 5c4d28f..c4f4415 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,11 +2,8 @@
description = "nixconfig";
inputs = {
-
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
-
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
home-manager = {
@@ -65,14 +62,17 @@
};
};
- outputs = inputs @{
- nixpkgs,
- ...
- }: let
+ outputs = inputs @ { nixpkgs, ... }:
+ let
+ username = "adam";
mkHost = { hostname, path }:
nixpkgs.lib.nixosSystem {
- specialArgs = { inherit inputs; };
- modules = [ path ];
+ specialArgs = { inherit inputs username; };
+ modules = [
+ path
+ inputs.chaotic.nixosModules.default
+ { networking.hostName = hostname; }
+ ];
};
in {
nixosConfigurations = {
@@ -80,6 +80,10 @@
hostname = "szpont";
path = ./hosts/desktop/configuration.nix;
};
+ laptop = mkHost {
+ hostname = "laptop";
+ path = ./hosts/laptop/configuration.nix;
+ };
};
};
}
diff --git a/hm/conf/clip.nix b/hm/conf/clip.nix
new file mode 100644
index 0000000..82de671
--- /dev/null
+++ b/hm/conf/clip.nix
@@ -0,0 +1,32 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.conf.clipboard;
+in
+{
+ options.szpont.hm.conf.clipboard = {
+ enable = lib.mkEnableOption "cliphist clipboard history";
+
+ backend = lib.mkOption {
+ type = lib.types.enum [ "wayland" "x11" "both" ];
+ default = "both";
+ description = "which clipboard backend tools to install";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.cliphist = {
+ enable = true;
+ allowImages = true;
+ systemdTargets = "graphical-session.target";
+ };
+
+ home.packages = lib.mkMerge [
+ (lib.mkIf (cfg.backend == "wayland" || cfg.backend == "both") [
+ pkgs.wl-clipboard
+ ])
+ (lib.mkIf (cfg.backend == "x11" || cfg.backend == "both") [
+ pkgs.xclip
+ ])
+ ];
+ };
+}
diff --git a/hm/conf/conf.nix b/hm/conf/conf.nix
new file mode 100644
index 0000000..c05c5c3
--- /dev/null
+++ b/hm/conf/conf.nix
@@ -0,0 +1,9 @@
+{ ... }:
+{
+ imports = [
+ ./clip.nix
+ ./git.nix
+ ./ssh.nix
+ ./xdg-dirs.nix
+ ];
+}
diff --git a/hm/conf/git.nix b/hm/conf/git.nix
new file mode 100644
index 0000000..f6a7267
--- /dev/null
+++ b/hm/conf/git.nix
@@ -0,0 +1,18 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.conf.git;
+in
+{
+ options.szpont.hm.conf.git.enable = lib.mkEnableOption "enables git vcs";
+
+ config = lib.mkIf cfg.enable {
+ programs.git = {
+ enable = true;
+ settings = {
+ user.name = "adikro";
+ user.email = "adikro@disroot.org";
+ init.defaultBranch = "main";
+ };
+ };
+ };
+}
diff --git a/hm/conf/ssh.nix b/hm/conf/ssh.nix
new file mode 100644
index 0000000..4587751
--- /dev/null
+++ b/hm/conf/ssh.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.conf.ssh;
+in
+{
+ options.szpont.hm.conf.ssh.enable = lib.mkEnableOption "enables ssh support";
+
+ config = lib.mkIf cfg.enable {
+
+ };
+}
diff --git a/hm/conf/xdg-dirs.nix b/hm/conf/xdg-dirs.nix
new file mode 100644
index 0000000..2bd9e64
--- /dev/null
+++ b/hm/conf/xdg-dirs.nix
@@ -0,0 +1,51 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.conf.xdg-dirs;
+in
+{
+ options.szpont.hm.conf.xdg-dirs = {
+ enable = lib.mkEnableOption "enables xdg dirs";
+
+ mediaPath = lib.mkOption {
+ type = lib.types.path;
+ default = config.home.homeDirectory;
+ description = "base path for media";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ xdg.userDirs = {
+ enable = true;
+ createDirectories = true;
+
+ download = "${config.home.homeDirectory}/dl";
+ documents = "${config.home.homeDirectory}/docs";
+
+ pictures = "${toString cfg.mediaPath}/pics";
+ videos = "${toString cfg.mediaPath}/vids";
+
+ desktop = null;
+ music = null;
+ publicShare = null;
+ templates = null;
+
+ extraConfig = {
+ XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj";
+ XDG_GAMES_DIR = "${config.home.homeDirectory}/games";
+ XDG_MEDIA_DIR = "${toString cfg.mediaPath}";
+ XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss";
+ XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips";
+ XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive";
+ };
+ };
+ home.sessionVariables = {
+ XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj";
+ XDG_GAMES_DIR = "${config.home.homeDirectory}/games";
+ XDG_MEDIA_DIR = "${toString cfg.mediaPath}";
+ XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss";
+ XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips";
+ XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive";
+ };
+
+ };
+}
diff --git a/hm/default.nix b/hm/default.nix
new file mode 100644
index 0000000..a8babd7
--- /dev/null
+++ b/hm/default.nix
@@ -0,0 +1,10 @@
+{ ... }:
+{
+ imports = [
+ ./soft/soft.nix
+ ./conf/conf.nix
+ ./env/env.nix
+ ./editors/editors.nix
+ ./shell/shell.nix
+ ];
+}
diff --git a/modules/hm/editors/default.nix b/hm/editors/editors.nix
index e990897..bca92dd 100644
--- a/modules/hm/editors/default.nix
+++ b/hm/editors/editors.nix
@@ -1,8 +1,8 @@
{ ... }:
{
imports = [
+ ./helix.nix
./nixvim.nix
- # ./helix.nix
# ./nvf.nix
];
}
diff --git a/hm/editors/helix.nix b/hm/editors/helix.nix
new file mode 100644
index 0000000..05412a8
--- /dev/null
+++ b/hm/editors/helix.nix
@@ -0,0 +1,14 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.editors.helix;
+in
+{
+ options.szpont.hm.editors.helix.enable = lib.mkEnableOption "enables helix editor";
+
+ config = lib.mkIf cfg.enable {
+ programs.helix = {
+ enable = true;
+ package = pkgs.helix;
+ };
+ };
+}
diff --git a/hm/editors/nixvim.nix b/hm/editors/nixvim.nix
new file mode 100644
index 0000000..a80a674
--- /dev/null
+++ b/hm/editors/nixvim.nix
@@ -0,0 +1,107 @@
+{ inputs, config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.editors.nixvim;
+in
+{
+ imports = [ inputs.nixvim.homeModules.nixvim ];
+
+ options.szpont.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework";
+
+ config = lib.mkIf cfg.enable {
+
+ programs.nixvim = {
+ enable = true;
+ package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
+
+ viAlias = true;
+ vimAlias = true;
+ defaultEditor = true;
+ waylandSupport = true;
+ colorschemes.gruvbox.enable = true;
+
+ plugins = {
+ lualine.enable = true;
+ oil.enable = true;
+ lazygit.enable = true;
+ persistence.enable = true;
+ nvim-autopairs.enable = true;
+ neoscroll.enable = true;
+ bufferline.enable = true;
+ web-devicons.enable = true;
+
+ treesitter = {
+ enable = true;
+ settings = {
+ indent.enable = true;
+ };
+ };
+
+ telescope = {
+ enable = true;
+ extensions = {
+ fzf-native = {
+ enable = true;
+ };
+ };
+ };
+
+ notify = {
+ enable = true;
+ settings = {
+ backgroundColour = "#1e1e2e";
+ fps = 60;
+ render = "default";
+ timeout = 500;
+ topDown = true;
+ };
+ };
+
+ hardtime = {
+ # enable = true;
+ settings = {
+ # disableMouse = true;
+ # enabled = false;
+ restrictionMode = "hint";
+ hint = true;
+ maxCount = 40;
+ maxTime = 1000;
+ };
+ };
+
+ nix.enable = true;
+ lsp = {
+ enable = true;
+ servers = {
+ nil_ls.enable = true;
+ clangd.enable = true;
+ };
+ };
+ };
+
+ opts = {
+ number = true;
+ relativenumber = true;
+ termguicolors = true;
+ # mouse = "a";
+ ignorecase = true;
+ smartcase = true;
+ expandtab = true;
+ shiftwidth = 2;
+ encoding = "utf-8";
+ fileencoding = "utf-8";
+ undofile = true;
+ swapfile = true;
+ backup = false;
+ autoread = true;
+ cursorline = true;
+ ruler = true;
+ gdefault = true;
+ scrolloff = 5;
+ clipboard = {
+ providers.wl-copy.enable = true;
+ register = "unnamedplus";
+ };
+ };
+ };
+ };
+}
diff --git a/hm/editors/nvf.nix b/hm/editors/nvf.nix
new file mode 100644
index 0000000..91348a9
--- /dev/null
+++ b/hm/editors/nvf.nix
@@ -0,0 +1,48 @@
+{ inputs, config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.editors.nvf;
+in
+{
+ options.szpont.hm.editors.nvf.enable = lib.mkEnableOption "enables nvf configuration framework";
+
+ config = lib.mkIf cfg.enable {
+ programs.nvf = {
+ enable = true;
+
+ settings.vim = {
+ package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
+
+ viAlias = true;
+ vimAlias = true;
+
+ theme = {
+ enable = true;
+ name = "gruvbox";
+ style = "dark";
+ };
+
+ statusline = {
+ lualine = {
+ enable = true;
+ theme = "gruvbox-material";
+ };
+ };
+
+ autopairs.nvim-autopairs.enable = true;
+
+ lsp.enable = true;
+
+ languages = {
+ nix = {
+ enable = true;
+ format = {
+ enable = true;
+ type = "alejandra";
+ };
+ };
+ clang.enable = true;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/hm/wayland/default.nix b/hm/env/env.nix
index a42476b..1c2c6d2 100644
--- a/modules/hm/wayland/default.nix
+++ b/hm/env/env.nix
@@ -1,8 +1,9 @@
{ ... }:
{
imports = [
- ./niri/default.nix
+ ./niri/niri.nix
+ ./theme.nix
./waybar.nix
];
}
diff --git a/hm/env/niri/binds.nix b/hm/env/niri/binds.nix
new file mode 100644
index 0000000..cb0feca
--- /dev/null
+++ b/hm/env/niri/binds.nix
@@ -0,0 +1,98 @@
+{ config, lib, pkgs, ... }:
+
+with config.lib.niri.actions;
+let
+ playerctl = spawn "${pkgs.playerctl}/bin/playerctl";
+in
+{
+ "Mod+O" = {
+ action = toggle-overview;
+ repeat = false;
+ };
+ "Mod+Slash".action = show-hotkey-overlay;
+
+ # Audio
+ XF86AudioRaiseVolume.action = playerctl "volume" "0.02+";
+ XF86AudioLowerVolume.action = playerctl "volume" "0.02-";
+ XF86AudioMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
+ XF86AudioMicMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
+
+ # Media keys
+ XF86AudioPlay.action = playerctl "play-pause";
+ XF86AudioPrev.action = playerctl "previous";
+ XF86AudioNext.action = playerctl "next";
+
+ # Column sizing
+ "Mod+Minus".action = set-column-width "-10%";
+ "Mod+Equal".action = set-column-width "+10%";
+
+ # Finer height adjustments when in column with other windows.
+ "Mod+Shift+Minus".action = set-window-height "-10%";
+ "Mod+Shift+Equal".action = set-window-height "+10%";
+
+ # Misc
+ "Mod+Shift+V".action = toggle-window-floating;
+ "Mod+Shift+P".action = power-off-monitors;
+ "Mod+W".action = toggle-column-tabbed-display;
+
+ "Mod+S".action = spawn "sh" "-c"
+ ''
+ filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
+ grim -g "$(slurp)" - | tee "$filename" | wl-copy
+ '';
+
+ "Mod+Shift+S".action = spawn "sh" "-c"
+ ''
+ filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
+ grim -g "$(slurp)" "$filename"
+
+ edited="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)-edited.png"
+ satty --filename "$filename" --output-filename "$edited"
+ '';
+
+ "Mod+Shift+D".action = spawn "sh" "-c"
+ ''
+ cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
+ '';
+
+ # --- System / General ---
+ "Mod+Return".action = spawn "foot";
+ "Mod+D".action = spawn "fuzzel";
+ "Mod+C".action = spawn "qalculate-gtk";
+ "Mod+BracketLeft".action = consume-or-expel-window-left;
+ "Mod+BracketRight".action = consume-or-expel-window-right;
+
+ "Mod+R".action = switch-preset-column-width;
+ "Mod+Shift+R".action = reset-window-height;
+ "Mod+F".action = maximize-column;
+ "Mod+Shift+F".action = fullscreen-window;
+
+ "Mod+Comma".action = consume-window-into-column;
+ "Mod+Period".action = expel-window-from-column;
+
+ "Mod+Shift+E".action = quit;
+
+ # --- Window Navigation (Focus) ---
+ "Mod+H".action = focus-column-left;
+ "Mod+L".action = focus-column-right;
+ "Mod+J".action = focus-workspace-down;
+ "Mod+K".action = focus-workspace-up;
+
+ # --- Window Management (Move) ---
+ "Mod+Shift+H".action = move-column-left;
+ "Mod+Shift+L".action = move-column-right;
+ "Mod+Shift+J".action = move-window-down-or-to-workspace-down;
+ "Mod+Shift+K".action = move-window-up-or-to-workspace-up;
+
+ # --- Window State ---
+ "Mod+Shift+Q".action = close-window;
+
+} // (
+ # --- Generated Workspace Binds (1-9) ---
+ builtins.listToAttrs (builtins.concatMap (i: let
+ strI = toString i;
+ in [
+ { name = "Mod+${strI}"; value.action = focus-workspace i; }
+ { name = "Mod+Shift+${strI}"; value.action.move-column-to-workspace = [ i ]; }
+ ]) (lib.range 1 9))
+)
diff --git a/hm/env/niri/niri.nix b/hm/env/niri/niri.nix
new file mode 100644
index 0000000..fddfcac
--- /dev/null
+++ b/hm/env/niri/niri.nix
@@ -0,0 +1,94 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.env.niri;
+in
+{
+ options.szpont.hm.env.niri.enable = lib.mkEnableOption "niri hm";
+ config = lib.mkIf cfg.enable {
+
+ szpont.hm.soft = {
+ awww.enable = true;
+ fuzzel.enable = true;
+ satty.enable = true;
+ swayidle.enable = true;
+ swaylock.enable = true;
+ };
+
+ programs.niri.settings = {
+ binds = import ./binds.nix { inherit config lib pkgs; };
+
+ prefer-no-csd = true;
+ hotkey-overlay.skip-at-startup = true;
+ input = {
+ mouse = {
+ accel-profile = "flat";
+ accel-speed = -0.6;
+ middle-emulation = true;
+ scroll-factor = 1.5;
+ };
+ focus-follows-mouse = {
+ enable = true;
+ max-scroll-amount = "10%";
+ };
+ mod-key = "Alt";
+ keyboard = {
+ xkb.layout = "pl";
+ repeat-delay = 400;
+ repeat-rate = 60;
+ };
+ power-key-handling.enable = false;
+ };
+ outputs = {
+ "DP-1" = {
+ focus-at-startup = true;
+ # backdrop-color = "";
+ variable-refresh-rate = "on-demand";
+ mode = {
+ width = 2560;
+ height = 1440;
+ refresh = 239.998;
+ };
+ };
+ };
+ cursor = {
+ hide-when-typing = true;
+ size = 8;
+ # theme = "";
+ };
+ layout = {
+ border = {
+ width = 2;
+ # active = <decoration>;
+ };
+ focus-ring = {
+ width = 2;
+ # active = <decoration>;
+ };
+ preset-column-widths = [
+ { proportion = 1. / 3.; }
+ { proportion = 1. / 2.; }
+ { proportion = 2. / 3.; }
+ ];
+ preset-window-heights = [
+ { proportion = 1. / 3.; }
+ { proportion = 1. / 2.; }
+ { proportion = 2. / 3.; }
+ ];
+ default-column-width.proportion = 0.5;
+ tab-indicator = {
+ gaps-between-tabs = 3;
+ position = "top";
+ };
+ };
+ spawn-at-startup = [
+ { command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
+ { command = [ "awww-daemon" ]; }
+ ];
+ };
+ home.packages = with pkgs; [
+ qalculate-gtk
+ grim
+ slurp
+ ];
+ };
+}
diff --git a/hm/env/theme.nix b/hm/env/theme.nix
new file mode 100644
index 0000000..54dd00b
--- /dev/null
+++ b/hm/env/theme.nix
@@ -0,0 +1,35 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.env.themes;
+in
+{
+ options.szpont.hm.env.themes = {
+ enable = lib.mkEnableOption "enables global theming";
+ gtk.enable = lib.mkEnableOption "GTK theming";
+ qt.enable = lib.mkEnableOption "QT theming";
+ };
+
+ config = lib.mkIf cfg.enable (lib.mkMerge [
+ (lib.mkIf cfg.gtk.enable {
+ gtk = {
+ enable = true;
+ gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
+ gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
+
+ theme = {
+ name = "Adwaita-dark";
+ package = pkgs.gnome-themes-extra;
+ };
+ };
+ })
+
+ (lib.mkIf cfg.qt.enable {
+ qt = {
+ enable = true;
+ style.name = "adwaita-dark";
+ style.package = pkgs.adwaita-qt;
+ platformTheme.name = "adwaita";
+ };
+ })
+ ]);
+}
diff --git a/hm/env/waybar.nix b/hm/env/waybar.nix
new file mode 100644
index 0000000..84ccea9
--- /dev/null
+++ b/hm/env/waybar.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.env.waybar;
+in
+{
+ options.szpont.hm.env.waybar.enable = lib.mkEnableOption "enables waybar";
+
+ config = lib.mkIf cfg.enable {
+ programs.waybar = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/shell/cli.nix b/hm/shell/cli.nix
new file mode 100644
index 0000000..222b002
--- /dev/null
+++ b/hm/shell/cli.nix
@@ -0,0 +1,35 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.shell.cli;
+in
+{
+ options.szpont.hm.shell.cli.enable = lib.mkEnableOption "modern cli tools";
+
+ config = lib.mkIf cfg.enable {
+ programs.zoxide.enable = true;
+ programs.zoxide.options = [ "--cmd cd" ];
+
+ programs.bat = {
+ enable = true;
+ config.theme = "gruvbox-dark";
+ };
+
+ programs.eza.enable = true;
+ programs.fzf.enable = true;
+ programs.fd.enable = true;
+ programs.ripgrep.enable = true;
+ programs.yazi.enable = true;
+
+ programs.btop.enable = true;
+ programs.fastfetch.enable = true;
+
+ home.packages = with pkgs; [
+ gdu
+ file
+ mediainfo
+ chafa
+ hexyl
+ procs
+ ];
+ };
+}
diff --git a/hm/shell/fish.nix b/hm/shell/fish.nix
new file mode 100644
index 0000000..644eadc
--- /dev/null
+++ b/hm/shell/fish.nix
@@ -0,0 +1,69 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.shell.fish;
+in
+{
+ options.szpont.hm.shell.fish.enable = lib.mkEnableOption "enables fish shell";
+
+ config = lib.mkIf cfg.enable {
+ programs.fish = {
+ enable = true;
+
+ interactiveShellInit = ''
+ set fish_greeting
+ fastfetch
+ '';
+
+ shellAliases = {
+ nos = "nh os switch";
+ nob = "nh os boot";
+ nfu = "nix flake update";
+ ll = "ls -lah";
+ la = "ls -A";
+ md = "mkdir -p";
+ rmf = "rm -rf";
+ gl = "git log --oneline --graph --decorate";
+ untar = "tar -xzvf";
+ tarc = "tar -czvf";
+ ff = "fastfetch";
+ cat = "bat";
+ ls = "eza";
+ };
+
+ plugins = [
+ {
+ name = "transient-fish";
+ src = pkgs.fishPlugins.transient-fish.src;
+ }
+ {
+ name = "fishbang";
+ src = pkgs.fishPlugins.fishbang.src;
+ }
+ {
+ name = "puffer";
+ src = pkgs.fishPlugins.puffer.src;
+ }
+ {
+ name = "pisces";
+ src = pkgs.fishPlugins.pisces.src;
+ }
+ {
+ name = "fzf-fish";
+ src = pkgs.fishPlugins.fzf-fish.src;
+ }
+ {
+ name = "fish-you-should-use";
+ src = pkgs.fishPlugins.fish-you-should-use.src;
+ }
+ {
+ name = "colored-man-pages";
+ src = pkgs.fishPlugins.colored-man-pages.src;
+ }
+ {
+ name = "fifc";
+ src = pkgs.fishPlugins.fifc.src;
+ }
+ ];
+ };
+ };
+}
diff --git a/hm/shell/foot.nix b/hm/shell/foot.nix
new file mode 100644
index 0000000..9847399
--- /dev/null
+++ b/hm/shell/foot.nix
@@ -0,0 +1,38 @@
+{ pkgs, lib, config, ... }:
+let
+ cfg = config.szpont.hm.shell.foot;
+
+ footTheme = pkgs.fetchurl {
+ url = "https://codeberg.org/dnkl/foot/raw/branch/master/themes/gruvbox-dark";
+ sha256 = "sha256-ubvnLgDEPGvNrwQdZRNguftg2SF5qcO1iVK0Tb5ZveI=";
+ };
+in
+{
+ options.szpont.hm.shell.foot = {
+ enable = lib.mkEnableOption "foot terminal emulator";
+ fontSize = lib.mkOption {
+ type = lib.types.int;
+ default = 14;
+ description = "Font size for the foot terminal";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ font = "JetBrainsMonoNFM-Regular:size=${toString cfg.fontSize}";
+ box-drawings-uses-font-glyphs = "yes";
+ include = "${footTheme}";
+ };
+ scrollback = {
+ lines = 10000;
+ };
+ mouse = {
+ hide-when-typing = "yes";
+ };
+ };
+ };
+ };
+}
diff --git a/modules/hm/terminal/default.nix b/hm/shell/shell.nix
index 635f75e..a1ca34d 100644
--- a/modules/hm/terminal/default.nix
+++ b/hm/shell/shell.nix
@@ -1,10 +1,9 @@
{ ... }:
{
imports = [
- ./btop.nix
+ ./cli.nix
./fish.nix
./foot.nix
./starship.nix
- ./utils.nix
];
}
diff --git a/hm/shell/starship.nix b/hm/shell/starship.nix
new file mode 100644
index 0000000..4996bdc
--- /dev/null
+++ b/hm/shell/starship.nix
@@ -0,0 +1,49 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.shell.starship;
+in
+{
+ options.szpont.hm.shell.starship.enable = lib.mkEnableOption "Starship prompt";
+
+ config = lib.mkIf cfg.enable {
+ programs.starship = {
+ enable = true;
+ enableFishIntegration = true;
+
+ settings = {
+ add_newline = true;
+
+ # format = lib.concatStrings [
+ # "$hostname"
+ # "$directory"
+ # "$git_branch"
+ # "$git_status"
+ # "$nix_shell"
+ # "$python"
+ # "$rust"
+ # "$character"
+ # ];
+
+ directory = {
+ truncate_to_repo = false;
+ read_only = "";
+ };
+
+ hostname.format = "[$hostname ]($style) ";
+
+ python = { symbol = ""; format = "[$symbol ]($style)"; };
+ rust = { symbol = ""; };
+ nix_shell.format = "[$symbol$state ]($style)";
+
+ git_status = {
+ conflicted = "󰦎";
+ ahead = "";
+ behind = "";
+ diverged = "";
+ renamed = "";
+ deleted = "x";
+ };
+ };
+ };
+ };
+}
diff --git a/hm/soft/awww.nix b/hm/soft/awww.nix
new file mode 100644
index 0000000..e807c9d
--- /dev/null
+++ b/hm/soft/awww.nix
@@ -0,0 +1,14 @@
+{ config, lib, pkgs, inputs, ... }:
+let
+ cfg = config.szpont.hm.soft.awww;
+in
+{
+ options.szpont.hm.soft.awww.enable = lib.mkEnableOption "enables awww";
+
+ config = lib.mkIf cfg.enable {
+ services.swww = {
+ enable = true;
+ package = inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww;
+ };
+ };
+}
diff --git a/hm/soft/easyeffects.nix b/hm/soft/easyeffects.nix
new file mode 100644
index 0000000..beb9ad6
--- /dev/null
+++ b/hm/soft/easyeffects.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.easyeffects;
+in
+{
+ options.szpont.hm.soft.easyeffects.enable = lib.mkEnableOption "EasyEffects audio equalizer";
+
+ config = lib.mkIf cfg.enable {
+ services.easyeffects = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/soft/fuzzel.nix b/hm/soft/fuzzel.nix
new file mode 100644
index 0000000..234aff7
--- /dev/null
+++ b/hm/soft/fuzzel.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.fuzzel;
+in
+{
+ options.szpont.hm.soft.fuzzel.enable = lib.mkEnableOption "enables fuzzel";
+
+ config = lib.mkIf cfg.enable {
+ programs.fuzzel = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/soft/gaming.nix b/hm/soft/gaming.nix
new file mode 100644
index 0000000..5fc7095
--- /dev/null
+++ b/hm/soft/gaming.nix
@@ -0,0 +1,12 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.gaming;
+in
+{
+ options.szpont.hm.soft.gaming.enable = lib.mkEnableOption "gaming hm config";
+ config = lib.mkIf cfg.enable {
+ programs.mangohud = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/soft/media.nix b/hm/soft/media.nix
new file mode 100644
index 0000000..0184957
--- /dev/null
+++ b/hm/soft/media.nix
@@ -0,0 +1,27 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.soft.media;
+in
+{
+ options.szpont.hm.soft.media.enable = lib.mkEnableOption "media playback and processing tools";
+
+ config = lib.mkIf cfg.enable {
+ programs.mpv = {
+ enable = true;
+ config = {
+
+ };
+ };
+ programs.yt-dlp = {
+ enable = true;
+ package = pkgs.yt-dlp_git;
+ };
+
+ home.packages = with pkgs; [
+ # syncplay
+ syncplay-nogui
+ ffmpeg
+ imagemagick
+ ];
+ };
+}
diff --git a/hm/soft/nixcord.nix b/hm/soft/nixcord.nix
new file mode 100644
index 0000000..4da3466
--- /dev/null
+++ b/hm/soft/nixcord.nix
@@ -0,0 +1,130 @@
+{ inputs, config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.soft.nixcord;
+in
+{
+ imports = [ inputs.nixcord.homeModules.nixcord ];
+
+ options.szpont.hm.soft.nixcord.enable = lib.mkEnableOption "nixcord configuration";
+
+ config = lib.mkIf cfg.enable {
+ programs.nixcord = {
+ enable = true;
+ package = pkgs.discord-krisp;
+ discord = {
+ enable = true;
+ vencord.enable = false;
+ equicord.enable = true;
+ };
+ config = {
+ frameless = true;
+ plugins = {
+ alwaysExpandRoles = { enable = true; hideArrow = true; };
+ alwaysTrust = { enable = true; domain = false; };
+ anammox.enable = true;
+ betterAudioPlayer.enable = true;
+ betterGifAltText.enable = true;
+ betterGifPicker.enable = true;
+ betterInvites.enable = true;
+ betterNotesBox = { enable = true; hide = true; };
+ betterQuickReact = { enable = true; columns = 6.0; rows = 1.0; compactMode = true; };
+ betterRoleContext.enable = true;
+ betterUploadButton.enable = true;
+ biggerStreamPreview.enable = true;
+ callTimer.enable = true;
+ characterCounter = { enable = true; colorEffects = false; };
+ cleanChannelName.enable = true;
+ clearUrLs.enable = true;
+ copyFileContents.enable = true;
+ copyStickerLinks.enable = true;
+ crashHandler.enable = true;
+ customTimestamps.enable = true;
+ disableCallIdle.enable = true;
+ disableDeepLinks.enable = true;
+ dontRoundMyTimestamps.enable = true;
+ equicordHelper = { enable = true; noMirroredCamera = true; };
+ expressionCloner.enable = true;
+ fakeNitro = { enable = true; enableEmojiBypass = false; enableStickerBypass = false; };
+ favoriteEmojiFirst.enable = true;
+ fixCodeblockGap.enable = true;
+ fixFileExtensions.enable = true;
+ fixImagesQuality.enable = true;
+ fixSpotifyEmbeds.enable = true;
+ fixYoutubeEmbeds.enable = true;
+ forceOwnerCrown.enable = true;
+ friendsSince.enable = true;
+ fullSearchContext.enable = true;
+ fullUserInChatbox.enable = true;
+ gifCollections = { enable = true; preventDuplicates = true; showCopyImageLink = true; };
+ gifRoulette = { enable = true; pingOwnerChance = true; };
+ guildTagSettings.enable = true;
+ homeTyping.enable = true;
+ ignoreTerms.enable = true;
+ iLoveSpam.enable = true;
+ imageFilename.enable = true;
+ imageLink.enable = true;
+ imageZoom = { enable = true; nearestNeighbour = true; saveZoomValues = true; square = true; };
+ imgToGif.enable = true;
+ inRole.enable = true;
+ inviteDefaults.enable = true;
+ memberCount.enable = true;
+ mentionAvatars = { enable = true; showAtSymbol = true; };
+ messageLinkEmbeds.enable = true;
+ messageLogger = { enable = true; ignoreSelf = true; };
+ moyai.enable = true;
+ musicControls.enable = true;
+ neverPausePreviews.enable = true;
+ newGuildSettings = { enable = true; messages = 1; };
+ newPluginsManager.enable = true;
+ noF1.enable = true;
+ noMaskedUrlPaste.enable = true;
+ noModalAnimation.enable = true;
+ noNitroUpsell.enable = true;
+ noOnboardingDelay.enable = true;
+ noMosaic.enable = true;
+ noProfileThemes.enable = true;
+ noSystemBadge.enable = true;
+ noTypingAnimation.enable = true;
+ overrideForumDefaults = { enable = true; defaultLayout = 2; };
+ onePingPerDm.enable = true;
+ openInApp.enable = true;
+ pauseInvitesForever.enable = true;
+ permissionFreeWill = { enable = true; lockout = false; };
+ permissionsViewer.enable = true;
+ pinDMs = { enable = true; canCollapseDmSection = true; };
+ pinIcon.enable = true;
+ platformIndicators.enable = true;
+ quoter.enable = true;
+ relationshipNotifier.enable = true;
+ roleColorEverywhere.enable = true;
+ saveFavoriteGiFs.enable = true;
+ sendTimestamps.enable = true;
+ serverInfo.enable = true;
+ showConnections.enable = true;
+ showHiddenChannels = { enable = true; };
+ showHiddenThings.enable = true;
+ showResourceChannels.enable = true;
+ showTimeoutDuration.enable = true;
+ spotifyCrack = { enable = true; noSpotifyAutoPause = false; };
+ streamerModeOnStream.enable = true;
+ typingIndicator = { enable = true; indicatorMode = 2; };
+ typingTweaks.enable = true;
+ unindent.enable = true;
+ universalMention = { enable = true; globalMention = true; };
+ unlimitedAccounts.enable = true;
+ unlockedAvatarZoom.enable = true;
+ userVoiceShow.enable = true;
+ validReply.enable = true;
+ validUser.enable = true;
+ viewIcons = { enable = true; format = "png"; };
+ voiceMessages.enable = true;
+ volumeBooster.enable = true;
+ whoReacted.enable = true;
+ whosWatching.enable = true;
+ youtubeAdblock.enable = true;
+ youtubeDescription.enable = true;
+ };
+ };
+ };
+ };
+}
diff --git a/hm/soft/satty.nix b/hm/soft/satty.nix
new file mode 100644
index 0000000..d3964a7
--- /dev/null
+++ b/hm/soft/satty.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.satty;
+in
+{
+ options.szpont.hm.soft.satty.enable = lib.mkEnableOption "enables satty image editor";
+
+ config = lib.mkIf cfg.enable {
+ programs.satty = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix
new file mode 100644
index 0000000..eb975ea
--- /dev/null
+++ b/hm/soft/soft.nix
@@ -0,0 +1,15 @@
+{ ... }:
+{
+ imports = [
+ ./awww.nix
+ ./easyeffects.nix
+ ./fuzzel.nix
+ ./gaming.nix
+ ./media.nix
+ ./nixcord.nix
+ ./satty.nix
+ ./spicetify.nix
+ ./swayidle.nix
+ ./swaylock.nix
+ ];
+}
diff --git a/hm/soft/spicetify.nix b/hm/soft/spicetify.nix
new file mode 100644
index 0000000..96c4d0d
--- /dev/null
+++ b/hm/soft/spicetify.nix
@@ -0,0 +1,24 @@
+{ inputs, pkgs, config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.spicetify;
+ spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
+in
+{
+ imports = [ inputs.spicetify-nix.homeManagerModules.default ];
+
+ options.szpont.hm.soft.spicetify.enable = lib.mkEnableOption "spicetify config";
+
+ config = lib.mkIf cfg.enable {
+ programs.spicetify = {
+ enable = true;
+
+ enabledExtensions = with spicePkgs.extensions; [
+ adblockify
+ hidePodcasts
+ ];
+
+ theme = spicePkgs.themes.catppuccin;
+ colorScheme = "mocha";
+ };
+ };
+}
diff --git a/hm/soft/swayidle.nix b/hm/soft/swayidle.nix
new file mode 100644
index 0000000..d06c74a
--- /dev/null
+++ b/hm/soft/swayidle.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.hm.soft.swayidle;
+in
+{
+ options.szpont.hm.soft.swayidle.enable = lib.mkEnableOption "enables swayidle";
+
+ config = lib.mkIf cfg.enable {
+ services.swayidle = {
+ enable = true;
+ };
+ };
+}
diff --git a/hm/soft/swaylock.nix b/hm/soft/swaylock.nix
new file mode 100644
index 0000000..a303e48
--- /dev/null
+++ b/hm/soft/swaylock.nix
@@ -0,0 +1,14 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.hm.soft.swaylock;
+in
+{
+ options.szpont.hm.soft.swaylock.enable = lib.mkEnableOption "enables swaylock";
+
+ config = lib.mkIf cfg.enable {
+ programs.swaylock = {
+ enable = true;
+ package = pkgs.swaylock-effects;
+ };
+ };
+}
diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix
index be74098..4dbf3bb 100644
--- a/hosts/desktop/configuration.nix
+++ b/hosts/desktop/configuration.nix
@@ -1,131 +1,67 @@
-{ inputs, pkgs, ... }:
+{ pkgs, ... }:
{
nixpkgs.config.allowUnfree = true;
imports = [
./hardware-configuration.nix
- ../../modules/sys/default.nix
- inputs.home-manager.nixosModules.home-manager
- inputs.chaotic.nixosModules.default
+ ../../sys/default.nix
];
- szpont = {
- audio.enable = true;
- bootloader = "systemd-boot";
- drivers = {
- enable = true;
- amd.enable = true;
- stability = "unstable";
+ szpont.sys = {
+ core = {
+ audio.enable = true;
+ bootloader = "systemd-boot";
+ drivers = {
+ enable = true;
+ amd.enable = true;
+ stability = "unstable";
+ };
+ fonts.enable = true;
+ greet.enable = true;
+ home-manager = {
+ enable = true;
+ users.adam.path = ./home.nix;
+ };
+ locale.enable = true;
+ network.enable = true;
+ security.enable = true;
};
- fonts.enable = true;
- greet.enable = true;
- home-manager = {
- enable = true;
- users.adam.path = ./home.nix;
+ srv = {
+ files = {
+ thunar.enable = true;
+ utils.enable = true;
+ };
+ gaming = {
+ enable = true;
+ steam.enable = true;
+ vr.enable = true;
+ };
+ kvm.enable = true;
+ nix-helper.enable = true;
+ ollama.enable = true;
};
- locale.enable = true;
- network.enable = true;
- security.enable = true;
- virtualization.enable = true;
- niri.enable = true;
- };
-
- programs.alvr = {
- enable = true;
- openFirewall = true;
- };
-
- programs.thunar = {
- enable = true;
- plugins = [
- pkgs.xfce.thunar-volman
- pkgs.xfce.thunar-vcs-plugin
- pkgs.xfce.thunar-archive-plugin
- ];
- };
-
- nixpkgs.config.packageOverrides = pkgs: {
- bottles = pkgs.bottles.override {
- removeWarningPopup = true;
+ wm = {
+ niri.enable = true;
};
};
- programs.xwayland = {
- enable = true;
- package = pkgs.xwayland-satellite;
- };
-
programs.kdeconnect.enable = true;
- programs.coolercontrol.enable = true;
-
- programs.gnupg.agent = {
- enable = true;
- enableSSHSupport = true;
- pinentryPackage = pkgs.pinentry-curses;
- };
-
- programs.gamescope.enable = true;
-
-programs.steam = {
- enable = true;
- localNetworkGameTransfers.openFirewall = true;
- dedicatedServer.openFirewall = true;
- remotePlay.openFirewall = false;
- extest.enable = true;
- protontricks.enable = true;
-
- extraCompatPackages = with pkgs; [
- proton-ge-custom
- ];
-};
-
- programs.gamemode = {
- enable = true;
- enableRenice = true;
- };
-
services.flatpak.enable = true;
- services.dbus.enable = true;
-
- xdg.portal = {
- enable = true;
- extraPortals = with pkgs; [
- xdg-desktop-portal-gtk
- ];
- };
-
-environment.sessionVariables = {
- NIXOS_OZONE_WL = "1";
- ELECTRON_ENABLE_WAYLAND = "1";
- };
-
programs.fish.enable = true;
users.users.adam = {
isNormalUser = true;
- extraGroups = [ "wheel" "input" ];
+ extraGroups = [ "wheel" ];
home = "/home/adam";
shell = pkgs.fish;
};
environment.systemPackages = with pkgs; [
- pigz
- pxz
nautilus
- swaylock-effects
- swayidle
- helvum
- fuzzel
- wineWowPackages.waylandFull
- winetricks
- linux-firmware
- mangohud
- cliphist
- wl-clipboard
rivalcfg
];
-system.stateVersion = "25.05";
+ system.stateVersion = "25.05";
}
diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix
index 71580b7..08140dd 100644
--- a/hosts/desktop/home.nix
+++ b/hosts/desktop/home.nix
@@ -1,65 +1,64 @@
-{ pkgs, inputs, ... }:
+{ pkgs, ... }:
{
imports = [
- ../../modules/hm/default.nix
+ ../../hm/default.nix
];
home.username = "adam";
home.homeDirectory = "/home/adam";
home.stateVersion = "25.05";
+ szpont.hm = {
+ conf = {
+ clipboard = {
+ enable = true;
+ backend = "wayland";
+ };
+ git.enable = true;
+ ssh.enable = true;
+ xdg-dirs = {
+ enable = true;
+ mediaPath = /media;
+ };
+ };
+ editors = {
+ nixvim.enable = true;
+ };
+ env = {
+ themes = {
+ enable = true;
+ gtk.enable = true;
+ qt.enable = true;
+ };
+ waybar.enable = true;
+ };
+ shell = {
+ cli.enable = true;
+ fish.enable = true;
+ foot.enable = true;
+ starship.enable = true;
+ };
+ soft = {
+ easyeffects.enable = true;
+ media.enable = true;
+ nixcord.enable = true;
+ spicetify.enable = true;
+ };
+ };
+
home.packages = with pkgs; [
- librewolf
- gavin-bc
- qalculate-gtk
- onlyoffice-desktopeditors
- file
- heroic
protonvpn-gui
evolution
- imagemagick
kdePackages.kdenlive
- syncplay
- bottles
- ncdu
- prismlauncher
- inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww
- grim
- slurp
- satty
veracrypt
brave
qbittorrent-enhanced
- foot
bitwarden-desktop
- yt-dlp_git
- ffmpeg
- mpv
- gimp
thunderbird
- obsidian
];
- services.easyeffects.enable = true;
-
- services.cliphist = {
- enable = true;
- systemdTargets = [ "graphical-session.target" ];
- };
-
- gtk = {
- enable = true;
- colorScheme = "dark";
- theme = {
- name = "Adwaita-dark";
- package = pkgs.gnome-themes-extra;
- };
- };
-
- qt = {
- enable = true;
- style.name = "adwaita-dark";
- style.package = pkgs.adwaita-qt;
- platformTheme.name = "kde";
- };
+ programs.obsidian.enable = true;
+ programs.onlyoffice.enable = true;
+ programs.librewolf.enable = true;
+ # programs.thunderbird.enable = true;
}
diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/hosts/laptop/configuration.nix
diff --git a/hosts/laptop/disko.nix b/hosts/laptop/disko.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/hosts/laptop/disko.nix
diff --git a/modules/hm/default.nix b/modules/hm/default.nix
deleted file mode 100644
index d388717..0000000
--- a/modules/hm/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ ... }:
-{
- imports = [
- ./editors/default.nix
- ./programs/default.nix
- ./terminal/default.nix
- ./wayland/default.nix
-
- ./git.nix
- ./xdg.nix
- ];
-}
diff --git a/modules/hm/editors/helix.nix b/modules/hm/editors/helix.nix
deleted file mode 100644
index 0204f8d..0000000
--- a/modules/hm/editors/helix.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ pkgs, ... }:
-{
- programs.helix = {
- enable = true;
-# package = pkgs.helix;
- };
-}
diff --git a/modules/hm/editors/nixvim.nix b/modules/hm/editors/nixvim.nix
deleted file mode 100644
index b8a4e5a..0000000
--- a/modules/hm/editors/nixvim.nix
+++ /dev/null
@@ -1,98 +0,0 @@
-{ pkgs, inputs, ... }:
-{
- imports = [ inputs.nixvim.homeModules.nixvim ];
- programs.nixvim = {
- enable = true;
- package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
-
- viAlias = true;
- vimAlias = true;
- defaultEditor = true;
- waylandSupport = true;
- colorschemes.gruvbox.enable = true;
-
- plugins = {
- lualine.enable = true;
- oil.enable = true;
- lazygit.enable = true;
- persistence.enable = true;
- nvim-autopairs.enable = true;
- neoscroll.enable = true;
- bufferline.enable = true;
- web-devicons.enable = true;
-
- treesitter = {
- enable = true;
- settings = {
- indent.enable = true;
- };
- };
-
- telescope = {
- enable = true;
- extensions = {
- fzf-native = {
- enable = true;
- };
- };
- };
-
- notify = {
- enable = true;
- settings = {
- backgroundColour = "#1e1e2e";
- fps = 60;
- render = "default";
- timeout = 500;
- topDown = true;
- };
- };
-
- hardtime = {
- # enable = true;
- settings = {
- # disableMouse = true;
- # enabled = false;
- restrictionMode = "hint";
- hint = true;
- maxCount = 40;
- maxTime = 1000;
- };
- };
-
- nix.enable = true;
- lsp = {
- enable = true;
- servers = {
- nil_ls.enable = true;
- clangd.enable = true;
- };
- };
- };
-
- opts = {
- number = true;
- relativenumber = true;
- termguicolors = true;
- # mouse = "a";
- ignorecase = true;
- smartcase = true;
- expandtab = true;
- shiftwidth = 2;
- encoding = "utf-8";
- fileencoding = "utf-8";
- undofile = true;
- swapfile = true;
- backup = false;
- autoread = true;
- cursorline = true;
- ruler = true;
- gdefault = true;
- scrolloff = 5;
- clipboard = {
- providers.wl-copy.enable = true;
- register = "unnamedplus";
- };
- };
- };
-}
diff --git a/modules/hm/editors/nvf.nix b/modules/hm/editors/nvf.nix
deleted file mode 100644
index ab805ca..0000000
--- a/modules/hm/editors/nvf.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ pkgs, neovim-nightly-overlay, ... }:
-
-{
- programs.nvf = {
- enable = true;
-
- settings.vim = {
- package = neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
-
- viAlias = true;
- vimAlias = true;
-
- theme = {
- enable = true;
- name = "gruvbox";
- style = "dark";
- };
-
- statusline = {
- lualine = {
- enable = true;
- theme = "gruvbox-material";
- };
- };
-
- autopairs.nvim-autopairs.enable = true;
-
- lsp.enable = true;
-
- languages = {
- nix = {
- enable = true;
- format = {
- enable = true;
- type = "alejandra";
- };
- };
- clang.enable = true;
- };
- };
- };
-}
diff --git a/modules/hm/git.nix b/modules/hm/git.nix
deleted file mode 100644
index dc11881..0000000
--- a/modules/hm/git.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ ... }:
-{
- programs.git = {
- enable = true;
- settings = {
- user.name = "adikro";
- user.email = "adikro@disroot.org";
- init.defaultBranch = "main";
- };
- };
-}
diff --git a/modules/hm/programs/default.nix b/modules/hm/programs/default.nix
deleted file mode 100644
index df6fb8b..0000000
--- a/modules/hm/programs/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ ... }:
-{
- imports = [
- ./nixcord.nix
- ./satty.nix
- ./spicetify.nix
- ./yazi.nix
- ];
-}
diff --git a/modules/hm/programs/nixcord.nix b/modules/hm/programs/nixcord.nix
deleted file mode 100644
index d7978af..0000000
--- a/modules/hm/programs/nixcord.nix
+++ /dev/null
@@ -1,204 +0,0 @@
-{ inputs, pkgs, ... }:
-{
- imports = [ inputs.nixcord.homeModules.nixcord ];
- programs.nixcord = {
- enable = true;
- package = pkgs.discord-krisp;
- discord = {
- enable = true;
- vencord.enable = false;
- equicord.enable = true;
- };
- config = {
- frameless = true;
- plugins = {
- alwaysExpandRoles = {
- enable = true;
- hideArrow = true;
- };
- alwaysTrust = {
- enable = true;
- domain = false;
- };
- anammox.enable = true;
- betterAudioPlayer.enable = true;
- betterGifAltText.enable = true;
- betterGifPicker.enable = true;
- betterInvites.enable = true;
- betterNotesBox = {
- enable = true;
- hide = true;
- };
- betterQuickReact = {
- enable = true;
- columns = 6.0;
- rows = 1.0;
- compactMode = true;
- };
- betterRoleContext.enable = true;
- betterUploadButton.enable = true;
- biggerStreamPreview.enable = true;
- callTimer.enable = true;
- characterCounter = {
- enable = true;
- colorEffects = false;
- };
- cleanChannelName.enable = true;
- clearUrLs.enable = true;
- copyFileContents.enable = true;
- copyStickerLinks.enable = true;
- crashHandler.enable = true;
- customTimestamps.enable = true;
- disableCallIdle.enable = true;
- disableDeepLinks.enable = true;
- # dontFilterMe.enable = true;
- dontRoundMyTimestamps.enable = true;
- equicordHelper = {
- enable = true;
- noMirroredCamera = true;
- };
- # equicordToolbox.enable = true;
- expressionCloner.enable = true;
- fakeNitro = {
- enable = true;
- enableEmojiBypass = false;
- enableStickerBypass = false;
- };
- favoriteEmojiFirst.enable = true;
- fixCodeblockGap.enable = true;
- fixFileExtensions.enable = true;
- fixImagesQuality.enable = true;
- fixSpotifyEmbeds.enable = true;
- fixYoutubeEmbeds.enable = true;
- forceOwnerCrown.enable = true;
- friendsSince.enable = true;
- fullSearchContext.enable = true;
- fullUserInChatbox.enable = true;
- gifCollections = {
- enable = true;
- preventDuplicates = true;
- showCopyImageLink = true;
- };
- gifRoulette = {
- enable = true;
- pingOwnerChance = true;
- };
- guildTagSettings.enable = true;
- homeTyping.enable = true;
- ignoreTerms.enable = true;
- iLoveSpam.enable = true;
- imageFilename.enable = true;
- imageLink.enable = true;
- imageZoom = {
- enable = true;
- nearestNeighbour = true;
- saveZoomValues = true;
- square = true;
- };
- imgToGif.enable = true;
- inRole.enable = true;
- inviteDefaults.enable = true;
- # keyboardNavigation = {
- # enable = true;
- # hotkey = [ "Alt+Q" ];
- # };
- memberCount.enable = true;
- mentionAvatars = {
- enable = true;
- showAtSymbol = true;
- };
- messageLinkEmbeds.enable = true;
- messageLogger = {
- enable = true;
- ignoreSelf = true;
- };
- # messageLoggerEnhanced.enable = true;
- moyai.enable = true;
- musicControls.enable = true;
- neverPausePreviews.enable = true;
- newGuildSettings = {
- enable = true;
- messages = 1;
- };
- newPluginsManager.enable = true;
- noF1.enable = true;
- noMaskedUrlPaste.enable = true;
- noModalAnimation.enable = true;
- noNitroUpsell.enable = true;
- # noOnboarding.enable = true;
- noOnboardingDelay.enable = true;
- noMosaic.enable = true;
- noProfileThemes.enable = true;
- noSystemBadge.enable = true;
- noTypingAnimation.enable = true;
- overrideForumDefaults = {
- enable = true;
- defaultLayout = 2;
- };
- onePingPerDm.enable = true;
- openInApp.enable = true;
- pauseInvitesForever.enable = true;
- permissionFreeWill = {
- enable = true;
- lockout = false;
- };
- permissionsViewer.enable = true;
- pinDMs = {
- enable = true;
- canCollapseDmSection = true;
- };
- pinIcon.enable = true;
- platformIndicators.enable = true;
- quoter.enable = true;
- relationshipNotifier.enable = true;
- roleColorEverywhere.enable = true;
- saveFavoriteGiFs.enable = true;
- sendTimestamps.enable = true;
- serverInfo.enable = true;
- showConnections.enable = true;
- showHiddenChannels = {
- enable = true;
- # channelStyle = 2;
- };
- showHiddenThings.enable = true;
- showResourceChannels.enable = true;
- showTimeoutDuration.enable = true;
- # soggy = {
- # enable = true;
- # imageLink = "https://codeberg.org/adikro/wallpapers/raw/branch/main/kirkinator.gif";
- # songLink = "https://video.twimg.com/amplify_video/1976076971651268608/vid/avc1/1080x720/KGLQcBQQDvLZUGKI.mp4";
- # };
- spotifyCrack = {
- enable = true;
- noSpotifyAutoPause = false;
- };
- streamerModeOnStream.enable = true;
- typingIndicator = {
- enable = true;
- indicatorMode = 2;
- };
- typingTweaks.enable = true;
- unindent.enable = true;
- universalMention = {
- enable = true;
- globalMention = true;
- };
- unlimitedAccounts.enable = true;
- unlockedAvatarZoom.enable = true;
- userVoiceShow.enable = true;
- validReply.enable = true;
- validUser.enable = true;
- viewIcons = {
- enable = true;
- format = "png";
- };
- voiceMessages.enable = true;
- volumeBooster.enable = true;
- whoReacted.enable = true;
- whosWatching.enable = true;
- youtubeAdblock.enable = true;
- youtubeDescription.enable = true;
- };
- };
- };
-}
diff --git a/modules/hm/programs/spicetify.nix b/modules/hm/programs/spicetify.nix
deleted file mode 100644
index 9d66181..0000000
--- a/modules/hm/programs/spicetify.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ pkgs, inputs, ... }:
-
-let
- spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
-in {
- imports = [
- inputs.spicetify-nix.homeManagerModules.spicetify
- ];
-
- programs.spicetify = {
- enable = true;
-
- enabledExtensions = with spicePkgs.extensions; [
- adblockify
- hidePodcasts
- ];
-
- theme = spicePkgs.themes.catppuccin;
- colorScheme = "mocha";
- };
-}
diff --git a/modules/hm/programs/yazi.nix b/modules/hm/programs/yazi.nix
deleted file mode 100644
index a8e2911..0000000
--- a/modules/hm/programs/yazi.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ inputs, ... }:
-{
-# nixpkgs.overlays = [ inputs.yazi.overlays.default ];
- programs.yazi = {
- enable = true;
- };
-}
diff --git a/modules/hm/terminal/btop.nix b/modules/hm/terminal/btop.nix
deleted file mode 100644
index dcd59ed..0000000
--- a/modules/hm/terminal/btop.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ ... }:
-{
- programs.btop = {
- enable = true;
- };
-}
diff --git a/modules/hm/terminal/fish.nix b/modules/hm/terminal/fish.nix
deleted file mode 100644
index ec75de8..0000000
--- a/modules/hm/terminal/fish.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ pkgs, ... }:
-{
- programs.fish = {
- enable = true;
-
- interactiveShellInit = ''
- set fish_greeting
- fastfetch
- '';
-
- shellAliases = {
- nos = "nh os switch";
- nob = "nh os boot";
- nfu = "nix flake update";
- ll = "ls -lah";
- la = "ls -A";
- md = "mkdir -p";
- rmf = "rm -rf";
- gl = "git log --oneline --graph --decorate";
- untar = "tar -xzvf";
- tarc = "tar -czvf";
- ff = "fastfetch";
- cat = "bat";
- ls = "eza";
- };
-
- plugins = [
- {
- name = "transient-fish";
- src = pkgs.fishPlugins.transient-fish.src;
- }
- {
- name = "fishbang";
- src = pkgs.fishPlugins.fishbang.src;
- }
- {
- name = "puffer";
- src = pkgs.fishPlugins.puffer.src;
- }
- {
- name = "pisces";
- src = pkgs.fishPlugins.pisces.src;
- }
- {
- name = "fzf-fish";
- src = pkgs.fishPlugins.fzf-fish.src;
- }
- {
- name = "fish-you-should-use";
- src = pkgs.fishPlugins.fish-you-should-use.src;
- }
- {
- name = "colored-man-pages";
- src = pkgs.fishPlugins.colored-man-pages.src;
- }
- {
- name = "fifc";
- src = pkgs.fishPlugins.fifc.src;
- }
- ];
- };
-}
diff --git a/modules/hm/terminal/foot.nix b/modules/hm/terminal/foot.nix
deleted file mode 100644
index 5c3098b..0000000
--- a/modules/hm/terminal/foot.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{pkgs, ...}:
-let
- footTheme = pkgs.fetchurl {
- url = "https://codeberg.org/dnkl/foot/raw/branch/master/themes/gruvbox-dark";
- sha256 = "sha256-ubvnLgDEPGvNrwQdZRNguftg2SF5qcO1iVK0Tb5ZveI=";
- };
-in
-{
- programs.foot = {
- enable = true;
- settings = {
- main = {
- font="JetBrainsMonoNFM-Regular:size=14";
-# font-bold = "${font}:style=Bold:${withSize}";
-# font-italic = "${fontItalic}:style=Italic:${withSize}";
-# font-bold-italic = "${fontItalic}:style=BoldItalic:${withSize}";
- box-drawings-uses-font-glyphs = true;
- include = "${footTheme}";
-};
- scrollback = {
- lines = 10000;
- };
- };
- };
- }
diff --git a/modules/hm/terminal/starship.nix b/modules/hm/terminal/starship.nix
deleted file mode 100644
index 82ab84e..0000000
--- a/modules/hm/terminal/starship.nix
+++ /dev/null
@@ -1,111 +0,0 @@
-{ ... }:
-{
- programs.starship = {
- enable = true;
- settings = {
- add_newline = true;
- aws.disabled = true;
- battery.disabled = true;
- buf.disabled = true;
- bun.disabled = true;
- c.format = "[$symbol ]($style)";
- cpp = {
- disabled = false;
- format = "[$symbol ]($style)";
- };
- cmake.disabled = true;
- cobol.disabled = true;
- # cmd_duration = {
- # min_time = 3;
- # show_notifications = true;
- # min_time_to_notify = 30;
- # };
- conda.disabled = true;
- container.disabled = true;
- crystal.disabled = true;
- daml.disabled = true;
- dart.disabled = true;
- deno.disabled = true;
- directory = {
- truncate_to_repo = false;
- read_only = "";
- };
- docker_context = {
- format = "[$symbol ]($style)";
- symbol = "";
- };
- dotnet.disabled = true;
- elixir.disabled = true;
- elm.disabled = true;
- erlang.disabled = true;
- fennel.disabled = true;
- fortran.disabled = true;
- gcloud.disabled = true;
- git_commit.tag_symbol = "";
- git_status = {
- conflicted = "󰦎";
- ahead = "";
- behind = "";
- diverged = "";
- renamed = "";
- deleted = "x";
- };
- gleam.disabled = true;
- golang.disabled = true;
- guix_shell.disabled = true;
- gradle.disabled = true;
- haskell.disabled = true;
- haxe.disabled = true;
- helm.disabled = true;
- hostname.format = "[$hostname ]($style) ";
- java.disabled = true;
- jobs.symbol = "󰓎";
- julia.disabled = true;
- kotlin.disabled = true;
- lua.disabled = true;
- meson.disabled = true;
- mojo.disabled = true;
- nats.disabled = true;
- netns.disabled = true;
- nim.disabled = true;
- nix_shell.format = "[$symbol$state ]($style)";
- nodejs.disabled = true;
- ocaml.disabled = true;
- odin.disabled = true;
- opa.disabled = true;
- openstack.disabled = true;
- package.disabled = true;
- perl.disabled = true;
- php.disabled = true;
- pixi.disabled = true;
- pulumi.disabled = true;
- purescript.disabled = true;
- python = {
- symbol = "";
- format = "[$symbol ]($style)";
- };
- quarto.disabled = true;
- rlang.disabled = true;
- raku.disabled = true;
- red.disabled = true;
- ruby.disabled = true;
- rust.symbol = "";
- scala.disabled = true;
- singularity.disabled = true;
- solidity.disabled = true;
- spack.disabled = true;
- # sudo = {
- # format = "[sudo ]($style)";
- # disabled = false;
- # };
- swift.disabled = true;
- terraform.disabled = true;
- typst.disabled = true;
- vagrant.disabled = true;
- vlang.disabled = true;
- vcsh.disabled = true;
- xmake.disabled = true;
- zig.disabled = true;
- };
- };
-}
diff --git a/modules/hm/terminal/utils.nix b/modules/hm/terminal/utils.nix
deleted file mode 100644
index c408e4a..0000000
--- a/modules/hm/terminal/utils.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ pkgs, ... }:
-{
- programs.zoxide = {
- enable = true;
- options = [
- "--cmd cd"
- ];
- };
- programs.bat = {
- enable = true;
- config = {
- theme = "gruvbox-dark";
- tabs = "2";
- };
- };
- home.packages = with pkgs; [
- fzf
- fd
- chafa
- hexyl
- eza
- ripgrep
- procs
- fastfetch
- ];
-}
diff --git a/modules/hm/wayland/niri/binds.nix b/modules/hm/wayland/niri/binds.nix
deleted file mode 100644
index 1ff3a38..0000000
--- a/modules/hm/wayland/niri/binds.nix
+++ /dev/null
@@ -1,108 +0,0 @@
-{ config, pkgs, ... }:
-{
- programs.niri.settings.binds = with config.lib.niri.actions;
- let
- set-volume = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@";
- playerctl = spawn "${pkgs.playerctl}/bin/playerctl";
- in
- {
- # Overview / help
- "Mod+O" = {
- action = toggle-overview;
- repeat = false;
- };
- "Mod+Slash".action = show-hotkey-overlay;
-
- # Audio
- # XF86AudioRaiseVolume.action = set-volume "2%+";
- # XF86AudioLowerVolume.action = set-volume "2%-";
- XF86AudioRaiseVolume.action = playerctl "volume" "0.02+";
- XF86AudioLowerVolume.action = playerctl "volume" "0.02-";
- XF86AudioMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
- XF86AudioMicMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
-
- # Media keys
- XF86AudioPlay.action = playerctl "play-pause";
- XF86AudioPrev.action = playerctl "previous";
- XF86AudioNext.action = playerctl "next";
-
- # Column sizing
- "Mod+Minus".action = set-column-width "-10%";
- "Mod+Equal".action = set-column-width "+10%";
-
- # Finer height adjustments when in column with other windows.
- "Mod+Shift+Minus".action = set-window-height "-10%";
- "Mod+Shift+Equal".action = set-window-height "+10%";
-
- # Misc
- "Mod+Shift+V".action = toggle-window-floating;
- "Mod+Shift+P".action = power-off-monitors;
- "Mod+W".action = toggle-column-tabbed-display;
-
- "Mod+S".action = spawn "sh" "-c"
- ''
- filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
- grim -g "$(slurp)" - | tee "$filename" | wl-copy
- '';
-
- "Mod+Shift+S".action = spawn "sh" "-c"
- ''
- filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
- grim -g "$(slurp)" "$filename"
-
- edited="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)-edited.png"
- satty --filename "$filename" --output-filename "$edited"
- '';
-
- "Mod+Shift+D".action = spawn "sh" "-c"
- ''
- cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
- '';
-
- # --- System / General ---
- "Mod+Return".action = spawn "foot";
- "Mod+D".action = spawn "fuzzel";
- "Mod+C".action = spawn "qalculate-gtk";
- "Mod+BracketLeft".action = consume-or-expel-window-left;
- "Mod+BracketRight".action = consume-or-expel-window-right;
-
- "Mod+R".action = switch-preset-column-width;
- "Mod+Shift+R".action = reset-window-height;
- "Mod+F".action = maximize-column;
- "Mod+Shift+F".action = fullscreen-window;
-
- "Mod+Comma".action = consume-window-into-column;
- "Mod+Period".action = expel-window-from-column;
-
- "Mod+Shift+E".action = quit;
-
- # --- Window Navigation (Focus) ---
- "Mod+H".action = focus-column-left;
- "Mod+L".action = focus-column-right;
- "Mod+J".action = focus-workspace-down;
- "Mod+K".action = focus-workspace-up;
-
- # --- Window Management (Move) ---
- "Mod+Shift+H".action = move-column-left;
- "Mod+Shift+L".action = move-column-right;
- "Mod+Shift+J".action = move-window-down-or-to-workspace-down;
- "Mod+Shift+K".action = move-window-up-or-to-workspace-up;
-
- # --- Window State ---
- "Mod+Shift+Q".action = close-window;
-
- "Mod+1".action = focus-workspace 1;
- "Mod+2".action = focus-workspace 2;
- "Mod+3".action = focus-workspace 3;
- "Mod+4".action = focus-workspace 4;
- "Mod+5".action = focus-workspace 5;
- "Mod+6".action = focus-workspace 6;
-
- "Mod+Shift+1".action.move-column-to-workspace = [ 1 ];
- "Mod+Shift+2".action.move-column-to-workspace = [ 2 ];
- "Mod+Shift+3".action.move-column-to-workspace = [ 3 ];
- "Mod+Shift+4".action.move-column-to-workspace = [ 4 ];
- "Mod+Shift+5".action.move-column-to-workspace = [ 5 ];
- "Mod+Shift+6".action.move-column-to-workspace = [ 6 ];
- };
-}
diff --git a/modules/hm/wayland/niri/default.nix b/modules/hm/wayland/niri/default.nix
deleted file mode 100644
index 61e7799..0000000
--- a/modules/hm/wayland/niri/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ ... }:
-{
- imports = [
- ./niri.nix
- ./binds.nix
- ];
-}
diff --git a/modules/hm/wayland/niri/niri.nix b/modules/hm/wayland/niri/niri.nix
deleted file mode 100644
index e6c8619..0000000
--- a/modules/hm/wayland/niri/niri.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{ lib, pkgs, ... }:
-{
- programs.niri.settings = {
- prefer-no-csd = true;
- hotkey-overlay.skip-at-startup = true;
- input = {
- mouse = {
- accel-profile = "flat";
- accel-speed = -0.6;
- middle-emulation = true;
- scroll-factor = 1.5;
- };
- focus-follows-mouse = {
- enable = true;
- max-scroll-amount = "10%";
- };
- mod-key = "Alt";
- keyboard = {
- xkb.layout = "pl";
- repeat-delay = 400;
- repeat-rate = 60;
- };
- power-key-handling.enable = false;
- };
- outputs = {
- "DP-1" = {
- focus-at-startup = true;
- # backdrop-color = "";
- variable-refresh-rate = "on-demand";
- mode = {
- width = 2560;
- height = 1440;
- refresh = 239.998;
- };
- };
- };
- cursor = {
- hide-when-typing = true;
- size = 8;
- # theme = "";
- };
- layout = {
- border = {
- width = 2;
- # active = <decoration>;
- };
- focus-ring = {
- width = 2;
- # active = <decoration>;
- };
- preset-column-widths = [
- { proportion = 1. / 3.; }
- { proportion = 1. / 2.; }
- { proportion = 2. / 3.; }
- ];
- preset-window-heights = [
- { proportion = 1. / 3.; }
- { proportion = 1. / 2.; }
- { proportion = 2. / 3.; }
- ];
- default-column-width.proportion = 0.5;
- tab-indicator = {
- gaps-between-tabs = 3;
- position = "top";
- };
- };
- spawn-at-startup = [
- { command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
- { command = [ "awww-daemon" ]; }
- ];
- };
-}
diff --git a/modules/hm/wayland/waybar.nix b/modules/hm/wayland/waybar.nix
deleted file mode 100644
index 17a2f46..0000000
--- a/modules/hm/wayland/waybar.nix
+++ /dev/null
@@ -1,151 +0,0 @@
-{ lib, pkgs, ... }:
-{
- programs.waybar = {
- enable = true;
- # settings = [
- # {
- # layer = "top";
- # position = "top";
- #
- # modules-center = [ "niri/workspaces" ];
- # modules-right = [
- # "idle_inhibitor"
- # "pulseaudio"
- # "disk"
- # "battery"
- # "custom/notification"
- # "tray"
- # "clock"
- # ];
- #
- # "niri/workspaces" = {
- # format = "{icon} {value}";
- # format-icons = {
- # active = "";
- # default = "";
- # };
- # };
- #
- # "niri/window" = {
- # icon = true;
- # };
- #
- # "pulseaudio" = {
- # format = "{icon}";
- # format-bluetooth = "{icon} ";
- # format-muted = "󰝟";
- # format-icons = {
- # headphone = "";
- # default = [
- # ""
- # ""
- # ];
- # };
- # scroll-step = 1;
- # on-click = "${lib.getExe pkgs.pwvucontrol}";
- # };
- #
- # clock = {
- # format = "{:%H:%M}  ";
- # format-alt = "{:%A; %B %d, %Y (%R)}  ";
- # tooltip-format = "<tt><small>{calendar}</small></tt>";
- # calendar = {
- # mode = "year";
- # mode-mon-col = 3;
- # weeks-pos = "right";
- # on-scroll = 1;
- # on-click-right = "mode";
- # format = {
- # months = "<span color='#ffead3'><b>{}</b></span>";
- # days = "<span color='#ecc6d9'><b>{}</b></span>";
- # weeks = "<span color='#99ffdd'><b>W{}</b></span>";
- # weekdays = "<span color='#ffcc66'><b>{}</b></span>";
- # today = "<span color='#ff6699'><b><u>{}</u></b></span>";
- # };
- # };
- # actions = {
- # on-click-right = "mode";
- # on-click-forward = "tz_up";
- # on-click-backward = "tz_down";
- # on-scroll-up = "shift_up";
- # on-scroll-down = "shift_down";
- # };
- # };
- #
- # battery = {
- # format = "{icon}";
- #
- # format-icons = [
- # "󰁺"
- # "󰁻"
- # "󰁼"
- # "󰁽"
- # "󰁾"
- # "󰁿"
- # "󰂀"
- # "󰂁"
- # "󰂂"
- # "󰁹"
- # ];
- # states = {
- # battery-10 = 10;
- # battery-20 = 20;
- # battery-30 = 30;
- # battery-40 = 40;
- # battery-50 = 50;
- # battery-60 = 60;
- # battery-70 = 70;
- # battery-80 = 80;
- # battery-90 = 90;
- # battery-100 = 100;
- # };
- #
- # format-plugged = "󰚥";
- # format-charging-battery-10 = "󰢜";
- # format-charging-battery-20 = "󰂆";
- # format-charging-battery-30 = "󰂇";
- # format-charging-battery-40 = "󰂈";
- # format-charging-battery-50 = "󰢝";
- # format-charging-battery-60 = "󰂉";
- # format-charging-battery-70 = "󰢞";
- # format-charging-battery-80 = "󰂊";
- # format-charging-battery-90 = "󰂋";
- # format-charging-battery-100 = "󰂅";
- # tooltip-format = "{capacity}% {timeTo}";
- # };
- #
- # "custom/notification" = {
- # format = "{icon} {} ";
- # tooltip-format = "Left: Open Notification Center\nRight: Toggle Do not Disturb\nMiddle: Clear Notifications";
- # format-icons = {
- # notification = "<span foreground='red'><sup></sup></span>";
- # none = "";
- # dnd-notification = "<span foreground='red'><sup></sup></span>";
- # dnd-none = "";
- # inhibited-notification = "<span foreground='red'><sup></sup></span>";
- # inhibited-none = "";
- # dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
- # dnd-inhibited-none = "";
- # };
- # return-type = "json";
- # exec-if = "which swaync-client";
- # exec = "swaync-client -swb";
- # on-click = "swaync-client -t -sw";
- # on-click-right = "swaync-client -d -sw";
- # on-click-middle = "swaync-client -C";
- # escape = true;
- # };
- #
- # tray = {
- # icon-size = 21;
- # spacing = 10;
- # };
- # }
- # ];
- # style = ''
- # #workspaces button {
- # color: @base05;
- # }
- # '';
- };
-}
diff --git a/modules/hm/xdg.nix b/modules/hm/xdg.nix
deleted file mode 100644
index 07b78f1..0000000
--- a/modules/hm/xdg.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ ... }:
-{
- xdg.userDirs = {
- enable = true;
-
- createDirectories = true;
- download = "$HOME/dl";
- documents = "$HOME/docs";
- pictures = "/media/pics";
- videos = "/media/vids";
-
- desktop = null;
- music = null;
- publicShare = null;
- templates = null;
-
- extraConfig = {
- XDG_PROJECTS_DIR = "$HOME/proj";
- XDG_GAMES_DIR = "$HOME/games";
- XDG_MEDIA_DIR = "/media";
- XDG_SS_DIR = "/media/pics/ss";
- XDG_CLIPS_DIR = "/media/vids/clips";
- XDG_ARCHIVE_DIR = "/media/archive";
- };
- };
- home.sessionVariables = {
- XDG_PROJECTS_DIR = "$HOME/proj";
- XDG_GAMES_DIR = "$HOME/games";
- XDG_MEDIA_DIR = "/media";
- XDG_SS_DIR = "/media/pics/ss";
- XDG_CLIPS_DIR = "/media/vids/clips";
- XDG_ARCHIVE_DIR = "/media/archive";
- };
-}
diff --git a/modules/sys/core/bootloader.nix b/modules/sys/core/bootloader.nix
deleted file mode 100644
index dabea20..0000000
--- a/modules/sys/core/bootloader.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ config, lib, ... }:
-{
- options.szpont.bootloader = lib.mkOption {
- type = lib.types.enum [ "systemd-boot" "grub" "none" ];
- description = "which bootloader to use";
- };
-
- config = lib.mkMerge [
- {
- boot.loader.efi.canTouchEfiVariables = true;
- boot.supportedFilesystems = [ "ntfs" ];
- }
-
- (lib.mkIf (config.szpont.bootloader == "systemd-boot") {
- boot = {
- kernelParams = [ "quiet" ];
-
- loader = {
- systemd-boot = {
- enable = true;
- editor = false;
- };
- timeout = 0;
- };
- };
- })
-
- (lib.mkIf (config.szpont.bootloader == "grub") {
- boot.loader.grub = {
- enable = true;
- device = "nodev";
- efiSupport = true;
- };
- })
- ];
-}
diff --git a/modules/sys/core/drivers.nix b/modules/sys/core/drivers.nix
deleted file mode 100644
index f12f6ab..0000000
--- a/modules/sys/core/drivers.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ config, lib, pkgs, ... }:
-{
- options.szpont.drivers = {
- enable = lib.mkEnableOption "enables hardware drivers";
-
- amd.enable = lib.mkEnableOption "AMD specific drivers and microcode";
-
- stability = lib.mkOption {
- type = lib.types.enum [ "stable" "unstable" ];
- default = "stable";
- };
- };
-
- config = lib.mkMerge [
- {
- services.smartd.enable = true;
- hardware = {
- sensor.iio.enable = true;
-
- enableRedistributableFirmware = true;
- graphics = {
- enable = true;
- enable32Bit = true;
- };
- };
- }
-
- (lib.mkIf config.szpont.drivers.amd.enable (lib.mkMerge [
- {
- services.xserver.videoDrivers = [ "amdgpu" ];
- hardware = {
- cpu.amd.updateMicrocode = true;
- amdgpu = {
- initrd.enable = true;
- overdrive.enable = true;
- };
- };
- }
-
- (lib.mkIf (config.szpont.drivers.stability == "unstable") {
- services.lact.enable = true;
-
- boot.kernelPackages = pkgs.linuxPackages_cachyos-lto-znver4;
- chaotic.mesa-git = {
- enable = true;
- fallbackSpecialisation = false;
- extraPackages = [ pkgs.mesa_git.opencl ];
- };
- })
-
- (lib.mkIf (config.szpont.drivers.stability == "stable") {
- boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
- })
- ]))
- ];
-}
diff --git a/modules/sys/core/home-manager.nix b/modules/sys/core/home-manager.nix
deleted file mode 100644
index 06f909f..0000000
--- a/modules/sys/core/home-manager.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ config, lib, inputs, ... }:
-{
- options.szpont.home-manager = {
- enable = lib.mkEnableOption "Home Manager configuration manager";
-
- users = lib.mkOption {
- default = {};
- description = "Attribute set of users and their home-manager configurations";
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- path = lib.mkOption {
- type = lib.types.path;
- description = "Path to the user's home.nix file";
- };
- };
- });
- };
- };
-
- config = lib.mkIf config.szpont.home-manager.enable {
- home-manager = {
- extraSpecialArgs = { inherit inputs; };
- useGlobalPkgs = true;
- useUserPackages = true;
- backupFileExtension = "bak";
-
- users = lib.mapAttrs (name: user: import user.path) config.szpont.home-manager.users;
- };
- };
-}
diff --git a/modules/sys/core/localization.nix b/modules/sys/core/localization.nix
deleted file mode 100644
index 232133d..0000000
--- a/modules/sys/core/localization.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ config, lib, ... }:
-{
- options.szpont.locale = {
- enable = lib.mkEnableOption "system localization (timezone and language)";
-
- timeZone = lib.mkOption {
- type = lib.types.str;
- default = "Europe/Warsaw";
- description = "the system timezone.";
- };
-
- format = lib.mkOption {
- type = lib.types.str;
- default = "pl_PL.UTF-8";
- description = "the locale used for numbers, time, and measurements.";
- };
- };
-
- config = lib.mkIf config.szpont.locale.enable {
- time.timeZone = config.szpont.locale.timeZone;
-
- i18n = {
- defaultLocale = "en_US.UTF-8";
-
- extraLocaleSettings = {
- LC_TIME = config.szpont.locale.format;
- LC_NUMERIC = config.szpont.locale.format;
- LC_MONETARY = config.szpont.locale.format;
- LC_PAPER = config.szpont.locale.format;
- LC_MEASUREMENT = config.szpont.locale.format;
- LC_COLLATE = config.szpont.locale.format;
- LC_NAME = config.szpont.locale.format;
- LC_ADDRESS = config.szpont.locale.format;
- LC_TELEPHONE = config.szpont.locale.format;
- LC_IDENTIFICATION = config.szpont.locale.format;
- };
- };
- };
-}
diff --git a/modules/sys/core/networking.nix b/modules/sys/core/networking.nix
deleted file mode 100644
index 7964e8b..0000000
--- a/modules/sys/core/networking.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ config, lib, ... }:
-{
- options.szpont.network = {
- enable = lib.mkEnableOption "system-wide networking setup";
-
- hostName = lib.mkOption {
- type = lib.types.str;
- default = "nixos";
- description = "The hostname for this specific machine.";
- };
- };
-
- config = lib.mkIf config.szpont.network.enable {
- networking = {
- hostName = config.szpont.network.hostName;
-
- networkmanager = {
- enable = true;
- wifi.macAddress = "stable-ssid";
- ethernet.macAddress = "stable-ssid";
- };
-
- firewall = {
- enable = true;
- };
- };
- systemd.services."NetworkManager-wait-online".enable = false;
- };
-}
diff --git a/modules/sys/default.nix b/modules/sys/default.nix
deleted file mode 100644
index 72c9ffc..0000000
--- a/modules/sys/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ ... }:
-{
- imports = [
- ./core/default.nix
- ./features/default.nix
- ./wayland/default.nix
- ];
-}
diff --git a/modules/sys/features/default.nix b/modules/sys/features/default.nix
deleted file mode 100644
index 790dc25..0000000
--- a/modules/sys/features/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ ... }:
-{
- imports = [
- ./nh.nix
- ./ollama.nix
- ./virtualization.nix
- ];
-}
diff --git a/modules/sys/features/ollama.nix b/modules/sys/features/ollama.nix
deleted file mode 100644
index 0989419..0000000
--- a/modules/sys/features/ollama.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ pkgs, ... }:
-{
- fileSystems."/models" = {
- device = "/home/ollama";
- fsType = "none";
- options = [ "bind" ];
- };
-
- services.ollama = {
- enable = true;
- package = pkgs.ollama-rocm;
- loadModels = [
- "deepseek-r1:14b"
- "qwen3:14b"
- "qwen3-coder:30b"
- ];
- syncModels = true;
- user = "ollama";
- models = "/models";
- };
-}
diff --git a/modules/sys/features/virtualization.nix b/modules/sys/features/virtualization.nix
deleted file mode 100644
index bb3e6cb..0000000
--- a/modules/sys/features/virtualization.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ config, lib, pkgs, ... }:
-{
- options.szpont.virtualization = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- };
-
- kvm = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = true;
- };
- };
- docker = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- };
- };
- };
-
- config = lib.mkIf config.szpont.virtualization.enable (lib.mkMerge [
- (lib.mkIf config.szpont.virtualization.kvm.enable {
- virtualisation.libvirtd = {
- enable = true;
- qemu.package = pkgs.qemu_kvm;
- qemu.swtpm.enable = true;
- };
- programs.virt-manager.enable = true;
- users.users.adam.extraGroups = [ "libvirtd" ];
- boot.initrd.kernelModules = [ "kvm-amd" ];
- })
-
- (lib.mkIf config.szpont.virtualization.docker.enable {
- virtualisation.docker.enable = true;
- environment.systemPackages = [ pkgs.docker-compose ];
- users.users.adam.extraGroups = [ "docker" ];
- })
- ]);
-}
diff --git a/modules/sys/wayland/niri.nix b/modules/sys/wayland/niri.nix
deleted file mode 100644
index 2054d9d..0000000
--- a/modules/sys/wayland/niri.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ inputs, config, lib, pkgs, ... }:
-{
- imports = [ inputs.niri.nixosModules.niri ];
-
- options.szpont.niri = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- };
- };
-
- config = lib.mkIf config.szpont.niri.enable {
- nixpkgs.overlays = [ inputs.niri.overlays.niri ];
-
- programs.niri = {
- enable = true;
- package = pkgs.niri-unstable;
- };
- };
-}
diff --git a/modules/sys/core/audio.nix b/sys/core/audio.nix
index 0769f8d..f855ad0 100644
--- a/modules/sys/core/audio.nix
+++ b/sys/core/audio.nix
@@ -1,8 +1,11 @@
{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.core.audio;
+in
{
- options.szpont.audio.enable = lib.mkEnableOption "audio support";
+ options.szpont.sys.core.audio.enable = lib.mkEnableOption "audio support";
- config = lib.mkIf config.szpont.audio.enable {
+ config = lib.mkIf cfg.enable {
services = {
pipewire = {
enable = true;
@@ -13,7 +16,6 @@
jack.enable = true;
wireplumber.enable = true;
};
-
playerctld.enable = true;
spotifyd.enable = true;
};
@@ -22,6 +24,7 @@
hardware.enableAllFirmware = true;
environment.systemPackages = with pkgs; [
+ helvum
alsa-utils
];
};
diff --git a/sys/core/bootloader.nix b/sys/core/bootloader.nix
new file mode 100644
index 0000000..292679e
--- /dev/null
+++ b/sys/core/bootloader.nix
@@ -0,0 +1,36 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.sys.core.bootloader;
+in
+{
+ options.szpont.sys.core.bootloader = lib.mkOption {
+ type = lib.types.enum [ "systemd-boot" "grub" "none" ];
+ default = "systemd-boot";
+ description = "Which bootloader to use";
+ };
+
+ config = lib.mkMerge [
+ {
+ boot.loader.efi.canTouchEfiVariables = true;
+ boot.supportedFilesystems = [ "ntfs" ];
+ boot.kernelParams = [ "quiet" "splash" ];
+ }
+
+ (lib.mkIf (cfg == "systemd-boot") {
+ boot.loader = {
+ systemd-boot.enable = true;
+ systemd-boot.editor = false;
+ timeout = 0;
+ };
+ })
+
+ (lib.mkIf (cfg == "grub") {
+ boot.loader.grub = {
+ enable = true;
+ device = "nodev";
+ efiSupport = true;
+ useOSProber = true;
+ };
+ })
+ ];
+}
diff --git a/modules/sys/core/default.nix b/sys/core/core.nix
index da8f277..da8f277 100644
--- a/modules/sys/core/default.nix
+++ b/sys/core/core.nix
diff --git a/sys/core/drivers.nix b/sys/core/drivers.nix
new file mode 100644
index 0000000..de7dcb5
--- /dev/null
+++ b/sys/core/drivers.nix
@@ -0,0 +1,48 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.core.drivers;
+in
+{
+ options.szpont.sys.core.drivers = {
+ enable = lib.mkEnableOption "enables hardware drivers";
+ amd.enable = lib.mkEnableOption "AMD specific drivers and microcode";
+ stability = lib.mkOption {
+ type = lib.types.enum [ "stable" "unstable" ];
+ default = "stable";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.smartd.enable = true;
+ hardware.sensor.iio.enable = true;
+ hardware.enableRedistributableFirmware = true;
+ hardware.graphics = {
+ enable = true;
+ enable32Bit = true;
+ };
+
+ programs.coolercontrol.enable = true;
+ environment.systemPackages = with pkgs; [ linux-firmware ];
+
+ } // (lib.mkIf cfg.amd.enable (lib.mkMerge [
+ {
+ services.xserver.videoDrivers = [ "amdgpu" ];
+ hardware.cpu.amd.updateMicrocode = true;
+ hardware.amdgpu = {
+ initrd.enable = true;
+ overdrive.enable = true;
+ };
+ }
+ (lib.mkIf (cfg.stability == "unstable") {
+ services.lact.enable = true;
+ boot.kernelPackages = pkgs.linuxPackages_cachyos-lto-znver4;
+ chaotic.mesa-git = {
+ enable = true;
+ extraPackages = [ pkgs.mesa_git.opencl ];
+ };
+ })
+ (lib.mkIf (cfg.stability == "stable") {
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+ })
+ ]));
+}
diff --git a/modules/sys/core/fonts.nix b/sys/core/fonts.nix
index af2c78d..5bdf751 100644
--- a/modules/sys/core/fonts.nix
+++ b/sys/core/fonts.nix
@@ -1,10 +1,13 @@
{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.core.fonts;
+in
{
- options.szpont.fonts = {
+ options.szpont.sys.core.fonts = {
enable = lib.mkEnableOption "system-wide fonts and console configuration";
};
- config = lib.mkIf config.szpont.fonts.enable {
+ config = lib.mkIf cfg.enable {
console = {
keyMap = "pl";
earlySetup = true;
diff --git a/modules/sys/core/greet.nix b/sys/core/greet.nix
index 4f4abf9..c5e3c5c 100644
--- a/modules/sys/core/greet.nix
+++ b/sys/core/greet.nix
@@ -1,8 +1,11 @@
{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.core.greet;
+in
{
- options.szpont.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet";
+ options.szpont.sys.core.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet";
- config = lib.mkIf config.szpont.greet.enable {
+ config = lib.mkIf cfg.enable {
services.greetd = {
enable = true;
settings = {
diff --git a/sys/core/home-manager.nix b/sys/core/home-manager.nix
new file mode 100644
index 0000000..df9a518
--- /dev/null
+++ b/sys/core/home-manager.nix
@@ -0,0 +1,34 @@
+{ inputs, config, lib,... }:
+let
+ cfg = config.szpont.sys.core.home-manager;
+in
+{
+ imports = [ inputs.home-manager.nixosModules.home-manager ];
+ options.szpont.sys.core.home-manager = {
+ enable = lib.mkEnableOption "home Manager configuration";
+
+ users = lib.mkOption {
+ default = {};
+ description = "attribute set of users and their home-manager configurations";
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ path = lib.mkOption {
+ type = lib.types.path;
+ description = "path to the user's home.nix file";
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ home-manager = {
+ extraSpecialArgs = { inherit inputs; };
+ useGlobalPkgs = true;
+ useUserPackages = true;
+ backupFileExtension = "bak";
+
+ users = lib.mapAttrs (name: user: import user.path) cfg.users;
+ };
+ };
+}
diff --git a/sys/core/localization.nix b/sys/core/localization.nix
new file mode 100644
index 0000000..0b046d4
--- /dev/null
+++ b/sys/core/localization.nix
@@ -0,0 +1,42 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.sys.core.locale;
+in
+{
+ options.szpont.sys.core.locale = {
+ enable = lib.mkEnableOption "system localization (timezone and language)";
+
+ timeZone = lib.mkOption {
+ type = lib.types.str;
+ default = "Europe/Warsaw";
+ description = "the system timezone.";
+ };
+
+ format = lib.mkOption {
+ type = lib.types.str;
+ default = "pl_PL.UTF-8";
+ description = "the locale used for numbers, time, and measurements.";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ time.timeZone = cfg.timeZone;
+
+ i18n = {
+ defaultLocale = "en_US.UTF-8";
+
+ extraLocaleSettings = {
+ LC_TIME = cfg.format;
+ LC_NUMERIC = cfg.format;
+ LC_MONETARY = cfg.format;
+ LC_PAPER = cfg.format;
+ LC_MEASUREMENT = cfg.format;
+ LC_COLLATE = cfg.format;
+ LC_NAME = cfg.format;
+ LC_ADDRESS = cfg.format;
+ LC_TELEPHONE = cfg.format;
+ LC_IDENTIFICATION = cfg.format;
+ };
+ };
+ };
+}
diff --git a/sys/core/networking.nix b/sys/core/networking.nix
new file mode 100644
index 0000000..aa8e606
--- /dev/null
+++ b/sys/core/networking.nix
@@ -0,0 +1,21 @@
+{ config, lib, ... }:
+let
+ cfg = config.szpont.sys.core.network;
+in
+{
+ options.szpont.sys.core.network.enable = lib.mkEnableOption "system-wide networking setup";
+
+ config = lib.mkIf cfg.enable {
+ networking = {
+ networkmanager = {
+ enable = true;
+ wifi.macAddress = "stable-ssid";
+ ethernet.macAddress = "stable-ssid";
+ };
+ firewall = {
+ enable = true;
+ };
+ };
+ systemd.services."NetworkManager-wait-online".enable = false;
+ };
+}
diff --git a/modules/sys/core/security.nix b/sys/core/security.nix
index b2b7827..2c34662 100644
--- a/modules/sys/core/security.nix
+++ b/sys/core/security.nix
@@ -1,10 +1,11 @@
{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.core.security;
+in
{
- options.szpont.security = {
- enable = lib.mkEnableOption "core security services";
- };
+ options.szpont.sys.core.security.enable = lib.mkEnableOption "core security services";
- config = lib.mkIf config.szpont.security.enable {
+ config = lib.mkIf cfg.enable {
services.gnome.gnome-keyring.enable = true;
security = {
@@ -12,6 +13,12 @@
rtkit.enable = true;
};
+ programs.gnupg.agent = {
+ enable = true;
+ enableSSHSupport = true;
+ pinentryPackage = pkgs.pinentry-curses;
+ };
+
systemd.user.services.polkit-gnome-authentication-agent-1 = {
description = "gnome-polkit-authentication-agent-1";
wantedBy = [ "graphical-session.target" ];
diff --git a/sys/default.nix b/sys/default.nix
new file mode 100644
index 0000000..ede6c62
--- /dev/null
+++ b/sys/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+{
+ imports = [
+ ./core/core.nix
+ ./pkgs/pkgs.nix
+ ./srv/srv.nix
+ ./wm/wm.nix
+ ];
+}
diff --git a/modules/hm/programs/satty.nix b/sys/pkgs/pkgs.nix
index facb35d..facb35d 100644
--- a/modules/hm/programs/satty.nix
+++ b/sys/pkgs/pkgs.nix
diff --git a/sys/srv/compat.nix b/sys/srv/compat.nix
new file mode 100644
index 0000000..5c08a9b
--- /dev/null
+++ b/sys/srv/compat.nix
@@ -0,0 +1,24 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.compat;
+in
+{
+ options.szpont.sys.srv.compat.enable = lib.mkEnableOption "enables compatibility with windows & x11";
+
+ config = lib.mkIf cfg.enable {
+ programs.xwayland = {
+ enable = true;
+ package = pkgs.xwayland-satellite;
+ };
+
+ environment.sessionVariables = {
+ NIXOS_OZONE_WL = "1";
+ ELECTRON_ENABLE_WAYLAND = "1";
+ };
+
+ environment.systemPackages = with pkgs; [
+ winetricks
+ wineWowPackages.waylandFull
+ ];
+ };
+}
diff --git a/sys/srv/docker.nix b/sys/srv/docker.nix
new file mode 100644
index 0000000..3baa689
--- /dev/null
+++ b/sys/srv/docker.nix
@@ -0,0 +1,15 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.docker;
+in
+{
+ options.szpont.sys.srv.docker.enable = lib.mkEnableOption "docker container engine";
+
+ config = lib.mkIf cfg.enable {
+ virtualisation.docker.enable = true;
+
+ environment.systemPackages = [ pkgs.docker-compose ];
+
+ users.users.adam.extraGroups = [ "docker" ];
+ };
+}
diff --git a/sys/srv/files.nix b/sys/srv/files.nix
new file mode 100644
index 0000000..bbd6ca8
--- /dev/null
+++ b/sys/srv/files.nix
@@ -0,0 +1,44 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.files;
+in
+{
+ options.szpont.sys.srv.files = {
+ thunar.enable = lib.mkEnableOption "thunar file manager";
+ utils.enable = lib.mkEnableOption "compression and trash utilities";
+ };
+
+ config = lib.mkMerge [
+ {
+ szpont.sys.srv.files.utils.enable = lib.mkDefault cfg.thunar.enable;
+ }
+
+ (lib.mkIf cfg.thunar.enable {
+ programs.thunar = {
+ enable = true;
+ plugins = with pkgs.xfce; [
+ thunar-volman
+ thunar-archive-plugin
+ thunar-vcs-plugin
+ ];
+ };
+ services.gnome.gnome-keyring.enable = true;
+ environment.systemPackages = with pkgs; [ file-roller ];
+ })
+
+ (lib.mkIf cfg.utils.enable {
+ services.gvfs.enable = true;
+
+ environment.systemPackages = with pkgs; [
+ trashy
+ gdu
+
+ unzip
+ p7zip
+ unrar
+ pxz
+ pigz
+ ];
+ })
+ ];
+}
diff --git a/sys/srv/gaming.nix b/sys/srv/gaming.nix
new file mode 100644
index 0000000..1eb5472
--- /dev/null
+++ b/sys/srv/gaming.nix
@@ -0,0 +1,50 @@
+{ config, lib, pkgs, username, ... }:
+let
+ cfg = config.szpont.sys.srv.gaming;
+in
+{
+ options.szpont.sys.srv.gaming = {
+ enable = lib.mkEnableOption "enables gaming stuff";
+ steam.enable = lib.mkEnableOption "enables steam stuff";
+ vr.enable = lib.mkEnableOption "enables vr support";
+ };
+
+ config = lib.mkMerge [
+ (lib.mkIf cfg.enable {
+ home-manager.users.${username}.szpont.hm.soft.gaming.enable = true;
+ programs.gamescope.enable = true;
+
+ programs.gamemode = {
+ enable = true;
+ enableRenice = true;
+ };
+
+ environment.systemPackages = with pkgs; [
+ heroic
+ prismlauncher
+ ];
+ })
+
+ (lib.mkIf cfg.steam.enable {
+ programs.steam = {
+ enable = true;
+ localNetworkGameTransfers.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ remotePlay.openFirewall = false;
+ extest.enable = true;
+ protontricks.enable = true;
+
+ extraCompatPackages = with pkgs; [
+ proton-ge-custom
+ ];
+ };
+ })
+
+ (lib.mkIf cfg.vr.enable {
+ programs.alvr = {
+ enable = true;
+ openFirewall = true;
+ };
+ })
+ ];
+}
diff --git a/sys/srv/kvm.nix b/sys/srv/kvm.nix
new file mode 100644
index 0000000..08c8578
--- /dev/null
+++ b/sys/srv/kvm.nix
@@ -0,0 +1,21 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.kvm;
+in
+{
+ options.szpont.sys.srv.kvm.enable = lib.mkEnableOption "KVM/QEMU virtualization with Virt-Manager";
+
+ config = lib.mkIf cfg.enable {
+ virtualisation.libvirtd = {
+ enable = true;
+ qemu.package = pkgs.qemu_kvm;
+ qemu.swtpm.enable = true;
+ };
+
+ programs.virt-manager.enable = true;
+
+ users.users.adam.extraGroups = [ "libvirtd" ];
+
+ boot.initrd.kernelModules = [ "kvm-amd" ];
+ };
+}
diff --git a/modules/sys/features/nh.nix b/sys/srv/nix-helper.nix
index d24d88b..fc81ddb 100644
--- a/modules/sys/features/nh.nix
+++ b/sys/srv/nix-helper.nix
@@ -1,13 +1,11 @@
{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.nix-helper;
+in
{
- options.szpont.nh = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = true;
- };
- };
+ options.szpont.sys.srv.nix-helper.enable = lib.mkEnableOption "enables nix-helper";
- config = lib.mkIf config.szpont.nh.enable {
+ config = lib.mkIf cfg.enable {
nix.settings = {
trusted-users = [ "root" "adam" ];
experimental-features = [ "nix-command" "flakes" ];
diff --git a/sys/srv/ollama.nix b/sys/srv/ollama.nix
new file mode 100644
index 0000000..7cb90bf
--- /dev/null
+++ b/sys/srv/ollama.nix
@@ -0,0 +1,37 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.szpont.sys.srv.ollama;
+in
+{
+ options.szpont.sys.srv.ollama = {
+ enable = lib.mkEnableOption "Ollama AI service";
+
+ useRocm = lib.mkOption {
+ type = lib.types.bool;
+ default = true;
+ description = "whether to use ollama with ROCm support.";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ fileSystems."/models" = {
+ device = "/home/ollama";
+ fsType = "none";
+ options = [ "bind" ];
+ };
+
+ services.ollama = {
+ enable = true;
+ package = if cfg.useRocm then pkgs.ollama-rocm else pkgs.ollama;
+
+ user = "ollama";
+ models = "/models";
+
+ syncModels = true;
+ loadModels = [
+ "deepseek-r1:14b"
+ "qwen3:14b"
+ ];
+ };
+ };
+}
diff --git a/sys/srv/srv.nix b/sys/srv/srv.nix
new file mode 100644
index 0000000..19e959e
--- /dev/null
+++ b/sys/srv/srv.nix
@@ -0,0 +1,12 @@
+{ ... }:
+{
+ imports = [
+ ./compat.nix
+ ./docker.nix
+ ./files.nix
+ ./gaming.nix
+ ./kvm.nix
+ ./nix-helper.nix
+ ./ollama.nix
+ ];
+}
diff --git a/sys/wm/niri.nix b/sys/wm/niri.nix
new file mode 100644
index 0000000..96a08ca
--- /dev/null
+++ b/sys/wm/niri.nix
@@ -0,0 +1,30 @@
+{ inputs, config, lib, pkgs, username, ... }:
+let
+ cfg = config.szpont.sys.wm.niri;
+in
+{
+ imports = [ inputs.niri.nixosModules.niri ];
+
+ options.szpont.sys.wm.niri.enable = lib.mkEnableOption "Niri";
+
+ config = lib.mkIf cfg.enable {
+ nixpkgs.overlays = [ inputs.niri.overlays.niri ];
+
+ programs.niri = {
+ enable = true;
+ package = pkgs.niri-unstable;
+ };
+
+ xdg.portal = {
+ enable = true;
+ extraPortals = [
+ pkgs.xdg-desktop-portal-gtk
+ ];
+ };
+
+ services.dbus.enable = true;
+
+ szpont.sys.srv.compat.enable = true;
+ home-manager.users.${username}.szpont.hm.env.niri.enable = true;
+ };
+}
diff --git a/modules/sys/wayland/default.nix b/sys/wm/wm.nix
index 48df857..48df857 100644
--- a/modules/sys/wayland/default.nix
+++ b/sys/wm/wm.nix