From 791bc419b6dac7c70951981ef6b34cdf85828470 Mon Sep 17 00:00:00 2001 From: adikro Date: Sat, 20 Dec 2025 03:14:45 +0100 Subject: absolutely massive rewrite, made (almost) everything modular with changes to come --- flake.lock | 62 +++++----- flake.nix | 22 ++-- hm/conf/clip.nix | 32 +++++ hm/conf/conf.nix | 9 ++ hm/conf/git.nix | 18 +++ hm/conf/ssh.nix | 11 ++ hm/conf/xdg-dirs.nix | 51 ++++++++ hm/default.nix | 10 ++ hm/editors/editors.nix | 8 ++ hm/editors/helix.nix | 14 +++ hm/editors/nixvim.nix | 107 +++++++++++++++++ hm/editors/nvf.nix | 48 ++++++++ hm/env/env.nix | 9 ++ hm/env/niri/binds.nix | 98 +++++++++++++++ hm/env/niri/niri.nix | 94 +++++++++++++++ hm/env/theme.nix | 35 ++++++ hm/env/waybar.nix | 13 ++ hm/shell/cli.nix | 35 ++++++ hm/shell/fish.nix | 69 +++++++++++ hm/shell/foot.nix | 38 ++++++ hm/shell/shell.nix | 9 ++ hm/shell/starship.nix | 49 ++++++++ hm/soft/awww.nix | 14 +++ hm/soft/easyeffects.nix | 13 ++ hm/soft/fuzzel.nix | 13 ++ hm/soft/gaming.nix | 12 ++ hm/soft/media.nix | 27 +++++ hm/soft/nixcord.nix | 130 ++++++++++++++++++++ hm/soft/satty.nix | 13 ++ hm/soft/soft.nix | 15 +++ hm/soft/spicetify.nix | 24 ++++ hm/soft/swayidle.nix | 13 ++ hm/soft/swaylock.nix | 14 +++ hosts/desktop/configuration.nix | 138 ++++++--------------- hosts/desktop/home.nix | 89 +++++++------- hosts/laptop/configuration.nix | 0 hosts/laptop/disko.nix | 0 modules/hm/default.nix | 12 -- modules/hm/editors/default.nix | 8 -- modules/hm/editors/helix.nix | 7 -- modules/hm/editors/nixvim.nix | 98 --------------- modules/hm/editors/nvf.nix | 42 ------- modules/hm/git.nix | 11 -- modules/hm/programs/default.nix | 9 -- modules/hm/programs/nixcord.nix | 204 -------------------------------- modules/hm/programs/satty.nix | 4 - modules/hm/programs/spicetify.nix | 21 ---- modules/hm/programs/yazi.nix | 7 -- modules/hm/terminal/btop.nix | 6 - modules/hm/terminal/default.nix | 10 -- modules/hm/terminal/fish.nix | 62 ---------- modules/hm/terminal/foot.nix | 25 ---- modules/hm/terminal/starship.nix | 111 ----------------- modules/hm/terminal/utils.nix | 26 ---- modules/hm/wayland/default.nix | 8 -- modules/hm/wayland/niri/binds.nix | 108 ----------------- modules/hm/wayland/niri/default.nix | 7 -- modules/hm/wayland/niri/niri.nix | 72 ----------- modules/hm/wayland/waybar.nix | 151 ----------------------- modules/hm/xdg.nix | 34 ------ modules/sys/core/audio.nix | 28 ----- modules/sys/core/bootloader.nix | 36 ------ modules/sys/core/default.nix | 14 --- modules/sys/core/drivers.nix | 56 --------- modules/sys/core/fonts.nix | 21 ---- modules/sys/core/greet.nix | 27 ----- modules/sys/core/home-manager.nix | 30 ----- modules/sys/core/localization.nix | 39 ------ modules/sys/core/networking.nix | 29 ----- modules/sys/core/security.nix | 27 ----- modules/sys/default.nix | 8 -- modules/sys/features/default.nix | 8 -- modules/sys/features/nh.nix | 26 ---- modules/sys/features/ollama.nix | 21 ---- modules/sys/features/virtualization.nix | 41 ------- modules/sys/wayland/default.nix | 6 - modules/sys/wayland/niri.nix | 20 ---- sys/core/audio.nix | 31 +++++ sys/core/bootloader.nix | 36 ++++++ sys/core/core.nix | 14 +++ sys/core/drivers.nix | 48 ++++++++ sys/core/fonts.nix | 24 ++++ sys/core/greet.nix | 30 +++++ sys/core/home-manager.nix | 34 ++++++ sys/core/localization.nix | 42 +++++++ sys/core/networking.nix | 21 ++++ sys/core/security.nix | 34 ++++++ sys/default.nix | 9 ++ sys/pkgs/pkgs.nix | 4 + sys/srv/compat.nix | 24 ++++ sys/srv/docker.nix | 15 +++ sys/srv/files.nix | 44 +++++++ sys/srv/gaming.nix | 50 ++++++++ sys/srv/kvm.nix | 21 ++++ sys/srv/nix-helper.nix | 24 ++++ sys/srv/ollama.nix | 37 ++++++ sys/srv/srv.nix | 12 ++ sys/wm/niri.nix | 30 +++++ sys/wm/wm.nix | 6 + 99 files changed, 1760 insertions(+), 1666 deletions(-) create mode 100644 hm/conf/clip.nix create mode 100644 hm/conf/conf.nix create mode 100644 hm/conf/git.nix create mode 100644 hm/conf/ssh.nix create mode 100644 hm/conf/xdg-dirs.nix create mode 100644 hm/default.nix create mode 100644 hm/editors/editors.nix create mode 100644 hm/editors/helix.nix create mode 100644 hm/editors/nixvim.nix create mode 100644 hm/editors/nvf.nix create mode 100644 hm/env/env.nix create mode 100644 hm/env/niri/binds.nix create mode 100644 hm/env/niri/niri.nix create mode 100644 hm/env/theme.nix create mode 100644 hm/env/waybar.nix create mode 100644 hm/shell/cli.nix create mode 100644 hm/shell/fish.nix create mode 100644 hm/shell/foot.nix create mode 100644 hm/shell/shell.nix create mode 100644 hm/shell/starship.nix create mode 100644 hm/soft/awww.nix create mode 100644 hm/soft/easyeffects.nix create mode 100644 hm/soft/fuzzel.nix create mode 100644 hm/soft/gaming.nix create mode 100644 hm/soft/media.nix create mode 100644 hm/soft/nixcord.nix create mode 100644 hm/soft/satty.nix create mode 100644 hm/soft/soft.nix create mode 100644 hm/soft/spicetify.nix create mode 100644 hm/soft/swayidle.nix create mode 100644 hm/soft/swaylock.nix create mode 100644 hosts/laptop/configuration.nix create mode 100644 hosts/laptop/disko.nix delete mode 100644 modules/hm/default.nix delete mode 100644 modules/hm/editors/default.nix delete mode 100644 modules/hm/editors/helix.nix delete mode 100644 modules/hm/editors/nixvim.nix delete mode 100644 modules/hm/editors/nvf.nix delete mode 100644 modules/hm/git.nix delete mode 100644 modules/hm/programs/default.nix delete mode 100644 modules/hm/programs/nixcord.nix delete mode 100644 modules/hm/programs/satty.nix delete mode 100644 modules/hm/programs/spicetify.nix delete mode 100644 modules/hm/programs/yazi.nix delete mode 100644 modules/hm/terminal/btop.nix delete mode 100644 modules/hm/terminal/default.nix delete mode 100644 modules/hm/terminal/fish.nix delete mode 100644 modules/hm/terminal/foot.nix delete mode 100644 modules/hm/terminal/starship.nix delete mode 100644 modules/hm/terminal/utils.nix delete mode 100644 modules/hm/wayland/default.nix delete mode 100644 modules/hm/wayland/niri/binds.nix delete mode 100644 modules/hm/wayland/niri/default.nix delete mode 100644 modules/hm/wayland/niri/niri.nix delete mode 100644 modules/hm/wayland/waybar.nix delete mode 100644 modules/hm/xdg.nix delete mode 100644 modules/sys/core/audio.nix delete mode 100644 modules/sys/core/bootloader.nix delete mode 100644 modules/sys/core/default.nix delete mode 100644 modules/sys/core/drivers.nix delete mode 100644 modules/sys/core/fonts.nix delete mode 100644 modules/sys/core/greet.nix delete mode 100644 modules/sys/core/home-manager.nix delete mode 100644 modules/sys/core/localization.nix delete mode 100644 modules/sys/core/networking.nix delete mode 100644 modules/sys/core/security.nix delete mode 100644 modules/sys/default.nix delete mode 100644 modules/sys/features/default.nix delete mode 100644 modules/sys/features/nh.nix delete mode 100644 modules/sys/features/ollama.nix delete mode 100644 modules/sys/features/virtualization.nix delete mode 100644 modules/sys/wayland/default.nix delete mode 100644 modules/sys/wayland/niri.nix create mode 100644 sys/core/audio.nix create mode 100644 sys/core/bootloader.nix create mode 100644 sys/core/core.nix create mode 100644 sys/core/drivers.nix create mode 100644 sys/core/fonts.nix create mode 100644 sys/core/greet.nix create mode 100644 sys/core/home-manager.nix create mode 100644 sys/core/localization.nix create mode 100644 sys/core/networking.nix create mode 100644 sys/core/security.nix create mode 100644 sys/default.nix create mode 100644 sys/pkgs/pkgs.nix create mode 100644 sys/srv/compat.nix create mode 100644 sys/srv/docker.nix create mode 100644 sys/srv/files.nix create mode 100644 sys/srv/gaming.nix create mode 100644 sys/srv/kvm.nix create mode 100644 sys/srv/nix-helper.nix create mode 100644 sys/srv/ollama.nix create mode 100644 sys/srv/srv.nix create mode 100644 sys/wm/niri.nix create mode 100644 sys/wm/wm.nix 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/hm/editors/editors.nix b/hm/editors/editors.nix new file mode 100644 index 0000000..bca92dd --- /dev/null +++ b/hm/editors/editors.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./helix.nix + ./nixvim.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/hm/env/env.nix b/hm/env/env.nix new file mode 100644 index 0000000..1c2c6d2 --- /dev/null +++ b/hm/env/env.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./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 = ; + }; + focus-ring = { + width = 2; + # active = ; + }; + 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/hm/shell/shell.nix b/hm/shell/shell.nix new file mode 100644 index 0000000..a1ca34d --- /dev/null +++ b/hm/shell/shell.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./cli.nix + ./fish.nix + ./foot.nix + ./starship.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 diff --git a/hosts/laptop/disko.nix b/hosts/laptop/disko.nix new file mode 100644 index 0000000..e69de29 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/default.nix b/modules/hm/editors/default.nix deleted file mode 100644 index e990897..0000000 --- a/modules/hm/editors/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ ... }: -{ - imports = [ - ./nixvim.nix - # ./helix.nix - # ./nvf.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/satty.nix b/modules/hm/programs/satty.nix deleted file mode 100644 index facb35d..0000000 --- a/modules/hm/programs/satty.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ ... }: -{ - -} 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/default.nix b/modules/hm/terminal/default.nix deleted file mode 100644 index 635f75e..0000000 --- a/modules/hm/terminal/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ ... }: -{ - imports = [ - ./btop.nix - ./fish.nix - ./foot.nix - ./starship.nix - ./utils.nix - ]; -} 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/default.nix b/modules/hm/wayland/default.nix deleted file mode 100644 index a42476b..0000000 --- a/modules/hm/wayland/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ ... }: -{ - imports = [ - ./niri/default.nix - - ./waybar.nix - ]; -} 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 = ; - }; - focus-ring = { - width = 2; - # active = ; - }; - 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 = "{calendar}"; - # calendar = { - # mode = "year"; - # mode-mon-col = 3; - # weeks-pos = "right"; - # on-scroll = 1; - # on-click-right = "mode"; - # format = { - # months = "{}"; - # days = "{}"; - # weeks = "W{}"; - # weekdays = "{}"; - # today = "{}"; - # }; - # }; - # 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 = ""; - # none = ""; - # dnd-notification = ""; - # dnd-none = ""; - # inhibited-notification = ""; - # inhibited-none = ""; - # dnd-inhibited-notification = ""; - # 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/audio.nix b/modules/sys/core/audio.nix deleted file mode 100644 index 0769f8d..0000000 --- a/modules/sys/core/audio.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - options.szpont.audio.enable = lib.mkEnableOption "audio support"; - - config = lib.mkIf config.szpont.audio.enable { - services = { - pipewire = { - enable = true; - audio.enable = true; - pulse.enable = true; - alsa.enable = true; - alsa.support32Bit = true; - jack.enable = true; - wireplumber.enable = true; - }; - - playerctld.enable = true; - spotifyd.enable = true; - }; - - security.rtkit.enable = true; - hardware.enableAllFirmware = true; - - environment.systemPackages = with pkgs; [ - alsa-utils - ]; - }; -} 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/default.nix b/modules/sys/core/default.nix deleted file mode 100644 index da8f277..0000000 --- a/modules/sys/core/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ ... }: -{ - imports = [ - ./audio.nix - ./bootloader.nix - ./drivers.nix - ./fonts.nix - ./greet.nix - ./home-manager.nix - ./localization.nix - ./networking.nix - ./security.nix - ]; -} 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/fonts.nix b/modules/sys/core/fonts.nix deleted file mode 100644 index af2c78d..0000000 --- a/modules/sys/core/fonts.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - options.szpont.fonts = { - enable = lib.mkEnableOption "system-wide fonts and console configuration"; - }; - - config = lib.mkIf config.szpont.fonts.enable { - console = { - keyMap = "pl"; - earlySetup = true; - font = "ter-v32n"; - packages = with pkgs; [ terminus_font ]; - }; - - fonts.packages = with pkgs; [ - nerd-fonts.jetbrains-mono - nerd-fonts.fira-mono - nerd-fonts.fira-code - ]; - }; -} diff --git a/modules/sys/core/greet.nix b/modules/sys/core/greet.nix deleted file mode 100644 index 4f4abf9..0000000 --- a/modules/sys/core/greet.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - options.szpont.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet"; - - config = lib.mkIf config.szpont.greet.enable { - services.greetd = { - enable = true; - settings = { - default_session = { - user = "greeter"; - command = '' - ${pkgs.tuigreet}/bin/tuigreet \ - --sessions ${config.services.displayManager.sessionData.desktops}/share/xsessions:${config.services.displayManager.sessionData.desktops}/share/wayland-sessions \ - --remember \ - --remember-user-session \ - --asterisks \ - --greeting 'Welcome to NixOS!' \ - --time - ''; - }; - }; - }; - security.pam.services.greetd.enableGnomeKeyring = true; - - environment.systemPackages = with pkgs; [ tuigreet ]; - }; -} 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/core/security.nix b/modules/sys/core/security.nix deleted file mode 100644 index b2b7827..0000000 --- a/modules/sys/core/security.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - options.szpont.security = { - enable = lib.mkEnableOption "core security services"; - }; - - config = lib.mkIf config.szpont.security.enable { - services.gnome.gnome-keyring.enable = true; - - security = { - polkit.enable = true; - rtkit.enable = true; - }; - - systemd.user.services.polkit-gnome-authentication-agent-1 = { - description = "gnome-polkit-authentication-agent-1"; - wantedBy = [ "graphical-session.target" ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; - Restart = "on-failure"; - RestartSec = 1; - TimeoutStopSec = 10; - }; - }; - }; -} 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/nh.nix b/modules/sys/features/nh.nix deleted file mode 100644 index d24d88b..0000000 --- a/modules/sys/features/nh.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - options.szpont.nh = { - enable = lib.mkOption { - type = lib.types.bool; - default = true; - }; - }; - - config = lib.mkIf config.szpont.nh.enable { - nix.settings = { - trusted-users = [ "root" "adam" ]; - experimental-features = [ "nix-command" "flakes" ]; - }; - - programs.nh = { - enable = true; - flake = "/etc/nixos"; - }; - - environment.systemPackages = with pkgs; [ - nix-output-monitor - nvd - ]; - }; -} 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/default.nix b/modules/sys/wayland/default.nix deleted file mode 100644 index 48df857..0000000 --- a/modules/sys/wayland/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ ... }: -{ - imports = [ - ./niri.nix - ]; -} 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/sys/core/audio.nix b/sys/core/audio.nix new file mode 100644 index 0000000..f855ad0 --- /dev/null +++ b/sys/core/audio.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.sys.core.audio; +in +{ + options.szpont.sys.core.audio.enable = lib.mkEnableOption "audio support"; + + config = lib.mkIf cfg.enable { + services = { + pipewire = { + enable = true; + audio.enable = true; + pulse.enable = true; + alsa.enable = true; + alsa.support32Bit = true; + jack.enable = true; + wireplumber.enable = true; + }; + playerctld.enable = true; + spotifyd.enable = true; + }; + + security.rtkit.enable = true; + 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/sys/core/core.nix b/sys/core/core.nix new file mode 100644 index 0000000..da8f277 --- /dev/null +++ b/sys/core/core.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + imports = [ + ./audio.nix + ./bootloader.nix + ./drivers.nix + ./fonts.nix + ./greet.nix + ./home-manager.nix + ./localization.nix + ./networking.nix + ./security.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/sys/core/fonts.nix b/sys/core/fonts.nix new file mode 100644 index 0000000..5bdf751 --- /dev/null +++ b/sys/core/fonts.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.sys.core.fonts; +in +{ + options.szpont.sys.core.fonts = { + enable = lib.mkEnableOption "system-wide fonts and console configuration"; + }; + + config = lib.mkIf cfg.enable { + console = { + keyMap = "pl"; + earlySetup = true; + font = "ter-v32n"; + packages = with pkgs; [ terminus_font ]; + }; + + fonts.packages = with pkgs; [ + nerd-fonts.jetbrains-mono + nerd-fonts.fira-mono + nerd-fonts.fira-code + ]; + }; +} diff --git a/sys/core/greet.nix b/sys/core/greet.nix new file mode 100644 index 0000000..c5e3c5c --- /dev/null +++ b/sys/core/greet.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.sys.core.greet; +in +{ + options.szpont.sys.core.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet"; + + config = lib.mkIf cfg.enable { + services.greetd = { + enable = true; + settings = { + default_session = { + user = "greeter"; + command = '' + ${pkgs.tuigreet}/bin/tuigreet \ + --sessions ${config.services.displayManager.sessionData.desktops}/share/xsessions:${config.services.displayManager.sessionData.desktops}/share/wayland-sessions \ + --remember \ + --remember-user-session \ + --asterisks \ + --greeting 'Welcome to NixOS!' \ + --time + ''; + }; + }; + }; + security.pam.services.greetd.enableGnomeKeyring = true; + + environment.systemPackages = with pkgs; [ tuigreet ]; + }; +} 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/sys/core/security.nix b/sys/core/security.nix new file mode 100644 index 0000000..2c34662 --- /dev/null +++ b/sys/core/security.nix @@ -0,0 +1,34 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.sys.core.security; +in +{ + options.szpont.sys.core.security.enable = lib.mkEnableOption "core security services"; + + config = lib.mkIf cfg.enable { + services.gnome.gnome-keyring.enable = true; + + security = { + polkit.enable = true; + 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" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + }; +} 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/sys/pkgs/pkgs.nix b/sys/pkgs/pkgs.nix new file mode 100644 index 0000000..facb35d --- /dev/null +++ b/sys/pkgs/pkgs.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + +} 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/sys/srv/nix-helper.nix b/sys/srv/nix-helper.nix new file mode 100644 index 0000000..fc81ddb --- /dev/null +++ b/sys/srv/nix-helper.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.sys.srv.nix-helper; +in +{ + options.szpont.sys.srv.nix-helper.enable = lib.mkEnableOption "enables nix-helper"; + + config = lib.mkIf cfg.enable { + nix.settings = { + trusted-users = [ "root" "adam" ]; + experimental-features = [ "nix-command" "flakes" ]; + }; + + programs.nh = { + enable = true; + flake = "/etc/nixos"; + }; + + environment.systemPackages = with pkgs; [ + nix-output-monitor + nvd + ]; + }; +} 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/sys/wm/wm.nix b/sys/wm/wm.nix new file mode 100644 index 0000000..48df857 --- /dev/null +++ b/sys/wm/wm.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ + ./niri.nix + ]; +} -- cgit v1.3