From 2c8a4dd99efd61298bc18393e7fcbf6063db8671 Mon Sep 17 00:00:00 2001 From: adikro Date: Sun, 8 Feb 2026 18:03:39 +0100 Subject: ... --- .sops.yaml | 11 +++ flake.lock | 154 +++++++++++++++++----------------------- flake.nix | 88 ++++++++++++----------- hm/conf/conf.nix | 1 + hm/conf/xdg-dirs.nix | 40 +++++------ hm/conf/xdg-mime.nix | 49 +++++++++++++ hm/editors/nixvim.nix | 4 ++ hm/shell/cli.nix | 41 ++++++++--- hm/shell/fish.nix | 16 +++-- hm/soft/easyeffects.nix | 12 ---- hm/soft/media.nix | 50 ++++++++++++- hm/soft/obs.nix | 9 ++- hm/soft/soft.nix | 1 - hosts/desktop/configuration.nix | 18 ++--- hosts/desktop/home.nix | 10 +-- os/srv/gaming.nix | 2 + os/srv/sops.nix | 28 ++++++++ os/srv/srv.nix | 2 + os/srv/syncthing.nix | 54 ++++++++++++++ secrets.yaml | 40 +++++++++++ 20 files changed, 430 insertions(+), 200 deletions(-) create mode 100644 .sops.yaml create mode 100644 hm/conf/xdg-mime.nix delete mode 100644 hm/soft/easyeffects.nix create mode 100644 os/srv/sops.nix create mode 100644 os/srv/syncthing.nix create mode 100644 secrets.yaml diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..3795cc2 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,11 @@ +keys: + - &admin_gpg EF69F2FB25C8B5A66918EA91A38ACEAB9656CD94 + - &host_szpont age1s39d4mdrjhkf8cy8eea02p836r7s875fj8f7w3z4ld2stmaac49qd075ww + +creation_rules: + - path_regex: secrets.yaml$ + key_groups: + - age: + - *host_szpont + pgp: + - *admin_gpg diff --git a/flake.lock b/flake.lock index 1f8dd44..ae5430d 100644 --- a/flake.lock +++ b/flake.lock @@ -98,32 +98,11 @@ ] }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -157,11 +136,11 @@ ] }, "locked": { - "lastModified": 1769978395, - "narHash": "sha256-gj1yP3spUb1vGtaF5qPhshd2j0cg4xf51pklDsIm19Q=", + "lastModified": 1770491427, + "narHash": "sha256-8b+0vixdqGnIIcgsPhjdX7EGPdzcVQqYxF+ujjex654=", "owner": "nix-community", "repo": "home-manager", - "rev": "984708c34d3495a518e6ab6b8633469bbca2f77a", + "rev": "cbd8a72e5fe6af19d40e2741dc440d9227836860", "type": "github" }, "original": { @@ -196,11 +175,11 @@ ] }, "locked": { - "lastModified": 1770128147, - "narHash": "sha256-R132VbY2fTbTBk96e7XX2Mis8jKhkpdDq8xHt5lUGTw=", + "lastModified": 1770509107, + "narHash": "sha256-YsfKRbd5fbcb2VTxywzAGpc4txXApMXfG0vtxEldt7Q=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "7c11c6be010c28eef42f564c383741f4a2678491", + "rev": "0bb52596f3ea543781d2c20b1c2ee495a174a7d5", "type": "github" }, "original": { @@ -212,11 +191,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1770059021, - "narHash": "sha256-VgKBxczgdh+MHdKCpaC4MjZgco9CDYfLdyADKFn6IHE=", + "lastModified": 1770505476, + "narHash": "sha256-HvlTxVEso/hl9lwweHerBRLtI/q05SQTxDr2l0Njfig=", "owner": "neovim", "repo": "neovim", - "rev": "19eb75831b931b7cbe6a95323f941f2836592f02", + "rev": "ed8fbd2e2992cb264cb62585098a1c7acc5c4585", "type": "github" }, "original": { @@ -237,11 +216,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1770133761, - "narHash": "sha256-3/2F3IfdyEz9ot0NytsVymt5Ma54EBBWcAc3CJKQFPE=", + "lastModified": 1770493836, + "narHash": "sha256-UPG9xFnVkqHF5e2GOucQO8BXXzwp8BwwON2g+WBXLMA=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "c44eff590edaff58ef9e34ecf38f6fbccb1be647", + "rev": "a17befde0c0ca25617fb3da505294deb45cef170", "type": "github" }, "original": { @@ -270,11 +249,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1770092965, - "narHash": "sha256-++K1ftjwPqMJzIO8t2GsdkYQzC2LLA5A1w21Uo+SLz4=", + "lastModified": 1770394936, + "narHash": "sha256-Pa0fkyLYUR+pZh7phPENDUo4mJIweaAm0uV83iUUlX8=", "owner": "YaLTeR", "repo": "niri", - "rev": "189917c93329c86ac2ddd89f459c26a028d590ba", + "rev": "549148d27779d024255a84535b42b947f1c2a113", "type": "github" }, "original": { @@ -292,11 +271,11 @@ ] }, "locked": { - "lastModified": 1770079495, - "narHash": "sha256-QQIkfywgOnkfaMLT/rjxaS9XSPNvTRwOHN1o3+lJHHE=", + "lastModified": 1770425102, + "narHash": "sha256-36XIjxE4YA+dg/ylzC6IfdxTtRizkysXsAh433EaPns=", "owner": "KaylorBen", "repo": "nixcord", - "rev": "ffe541f2ec948f55fd16a069040d505b810a814f", + "rev": "d1880604a496708083964693d4ddc3783f81645b", "type": "github" }, "original": { @@ -307,11 +286,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1770115704, - "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", "type": "github" }, "original": { @@ -338,11 +317,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1770056022, - "narHash": "sha256-yvCz+Qmci1bVucXEyac3TdoSPMtjqVJmVy5wro6j/70=", + "lastModified": 1770464364, + "narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d04d8548aed39902419f14a8537006426dc1e4fa", + "rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457", "type": "github" }, "original": { @@ -377,11 +356,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1770025103, - "narHash": "sha256-Qlb19PP0n6s+v1MywVjROV5XwsCvA58XXiXHk0Govb4=", + "lastModified": 1770388595, + "narHash": "sha256-0NvpmDqFcJAtRFJE3RDZWnN7PDJBZutoDtN+Cl8a3DY=", "owner": "nix-community", "repo": "nixvim", - "rev": "31c3b3687dc85e3fbbf5c44728a5ee231608f8a9", + "rev": "51abc532525e486176f9a7b24b17908c60017b54", "type": "github" }, "original": { @@ -390,27 +369,6 @@ "type": "github" } }, - "nur": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1770143912, - "narHash": "sha256-x+YAcvgybyeHMZcjNjKyHG8WBTNetusVO/PCEipPrA4=", - "owner": "nix-community", - "repo": "NUR", - "rev": "5a34f005effc58a448900b9e16b9dd15373e85eb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, "root": { "inputs": { "disko": "disko", @@ -421,8 +379,8 @@ "nixcord": "nixcord", "nixpkgs": "nixpkgs", "nixvim": "nixvim", - "nur": "nur", "satty": "satty", + "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", "waybar": "waybar", "yazi": "yazi" @@ -475,11 +433,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1770046271, - "narHash": "sha256-OE/d7E4g7BfPpL0PMG8B5AuGLA8/IPItG/h7+YZyBoU=", + "lastModified": 1770383675, + "narHash": "sha256-pR3Mc5Eue4YcIMcrzkyDhZPpovRFa8TW1PjL/ysH/7s=", "owner": "gabm", "repo": "Satty", - "rev": "69305902cb5cfc55bc7d3e2de36ab2df26440bad", + "rev": "7ae73dfb2c0f96e6820287390c1b8196c11cc0e0", "type": "github" }, "original": { @@ -488,6 +446,26 @@ "type": "github" } }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770526836, + "narHash": "sha256-xbvX5Ik+0inJcLJtJ/AajAt7xCk6FOCrm5ogpwwvVDg=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "d6e0e666048a5395d6ea4283143b7c9ac704720d", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "spicetify-nix": { "inputs": { "nixpkgs": [ @@ -496,11 +474,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1769986820, - "narHash": "sha256-O9OQ44dk9TJdtRIG828DUI54XdkfZET7AlN1RgTsPis=", + "lastModified": 1770528352, + "narHash": "sha256-KO51BALxgLUlhg1CqQgA3Rj8vgAcDvoLxzNLTxD65cc=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "68de6434cfaa8983f3775b858b8b76e7c5dbd29c", + "rev": "9f4ab243968118026f4ff82f7ce41d30319e2bf0", "type": "github" }, "original": { @@ -562,11 +540,11 @@ ] }, "locked": { - "lastModified": 1770141194, - "narHash": "sha256-cgtKNt9t+LlaCKwkVtcVpNeJR8v0jcUDdSzbfmgW5S0=", + "lastModified": 1770495628, + "narHash": "sha256-hcPR/40oTUulZHxxyarOzPz7izbMu8IbEQ3/2dGaBQQ=", "owner": "Alexays", "repo": "Waybar", - "rev": "0d27c093b1b07bbde86fe83a29b2b1d380ac54bd", + "rev": "2616785d187656646571f390978440ee2e13eb17", "type": "github" }, "original": { @@ -595,11 +573,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1770083504, - "narHash": "sha256-1CB57EPNjZOAjMeFzkG5wbzjuLuKT317alEK6JUf9sc=", + "lastModified": 1770167989, + "narHash": "sha256-rE2WTxKHe3KMG/Zr5YUNeKHkZfWwSFl7yJXrOKnunHg=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "75c9f5e77573b36b8d341c28c0d32e9c9a0a2309", + "rev": "0947c4685f6237d4f8045482ce0c62feab40b6c4", "type": "github" }, "original": { @@ -617,11 +595,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1769971982, - "narHash": "sha256-dc8lG9CxtrIk+tOsQx8TJKULQBG27Hoio4O4M/6CxFM=", + "lastModified": 1770518798, + "narHash": "sha256-5TnWJRYeXzgeG2jFsg+gee+jKLeHaPzQBhczgj9cPs8=", "owner": "sxyazi", "repo": "yazi", - "rev": "6757fed5aa82bfdcd5ecd52e8f374dc286220cc0", + "rev": "0aeeb3b0f76ac2748cb6a40c01689b5c2f74a932", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ee9cc2f..4d432a7 100644 --- a/flake.nix +++ b/flake.nix @@ -7,8 +7,8 @@ # Snapshot of nixpkgs with the 6.17.13 kernel for compatibility kernelv.url = "github:NixOS/nixpkgs/52e64396e98aef211f4127416dbdae17a01b3d3f"; - nur = { - url = "github:nix-community/NUR"; + sops-nix = { + url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -63,47 +63,51 @@ }; }; - outputs = { - self, - nixpkgs, - nur, - ... - } @ inputs: let - mkHost = { - hostname, - path, - user ? "adam", - }: - nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs; - username = user; + outputs = + { + self, + nixpkgs, + sops-nix, + ... + }@inputs: + let + mkHost = + { + hostname, + path, + user ? "adam", + }: + nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + username = user; + }; + modules = [ + path + sops-nix.nixosModules.sops + { networking.hostName = hostname; } + ]; + }; + in + { + nixosConfigurations = { + szpont = mkHost { + hostname = "szpont"; + path = ./hosts/desktop/configuration.nix; + }; + laptop = mkHost { + hostname = "laptop"; + path = ./hosts/laptop/configuration.nix; + }; + thinkpad = mkHost { + hostname = "thinkpad"; + path = ./hosts/thinkpad/configuration.nix; + }; + pendrive = mkHost { + hostname = "pendrive"; + path = ./hosts/pendrive/configuration.nix; + user = "user"; }; - modules = [ - path - {networking.hostName = hostname;} - {nixpkgs.overlays = [nur.overlays.default];} - ]; - }; - in { - nixosConfigurations = { - szpont = mkHost { - hostname = "szpont"; - path = ./hosts/desktop/configuration.nix; - }; - laptop = mkHost { - hostname = "laptop"; - path = ./hosts/laptop/configuration.nix; - }; - thinkpad = mkHost { - hostname = "thinkpad"; - path = ./hosts/thinkpad/configuration.nix; - }; - pendrive = mkHost { - hostname = "pendrive"; - path = ./hosts/pendrive/configuration.nix; - user = "user"; }; }; - }; } diff --git a/hm/conf/conf.nix b/hm/conf/conf.nix index 6c54d8a..57f9ba1 100644 --- a/hm/conf/conf.nix +++ b/hm/conf/conf.nix @@ -4,5 +4,6 @@ ./clip.nix ./git.nix ./xdg-dirs.nix + ./xdg-mime.nix ]; } diff --git a/hm/conf/xdg-dirs.nix b/hm/conf/xdg-dirs.nix index d779dba..ee34bd0 100644 --- a/hm/conf/xdg-dirs.nix +++ b/hm/conf/xdg-dirs.nix @@ -19,9 +19,9 @@ in download = "${config.home.homeDirectory}/dl"; documents = "${config.home.homeDirectory}/docs"; - + pictures = "${toString cfg.mediaPath}/pics"; - videos = "${toString cfg.mediaPath}/vids"; + videos = "${toString cfg.mediaPath}/vids"; desktop = null; music = null; @@ -29,25 +29,25 @@ in 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_MOVIES_DIR = "${toString cfg.mediaPath}/movies"; - XDG_ANIME_DIR = "${toString cfg.mediaPath}/anime"; - XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; + PROJECTS = "${config.home.homeDirectory}/proj"; + GAMES = "${config.home.homeDirectory}/games"; + MEDIA = "${toString cfg.mediaPath}"; + SS = "${toString cfg.mediaPath}/pics/ss"; + CLIPS = "${toString cfg.mediaPath}/vids/clips"; + MOVIES = "${toString cfg.mediaPath}/movies"; + ANIME = "${toString cfg.mediaPath}/anime"; + ARCHIVE = "${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_MOVIES_DIR = "${toString cfg.mediaPath}/movies"; - XDG_ANIME_DIR = "${toString cfg.mediaPath}/anime"; - XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; - }; + home.sessionVariables = { + PROJECTS = "${config.home.homeDirectory}/proj"; + GAMES = "${config.home.homeDirectory}/games"; + MEDIA = "${toString cfg.mediaPath}"; + SS = "${toString cfg.mediaPath}/pics/ss"; + CLIPS = "${toString cfg.mediaPath}/vids/clips"; + MOVIES = "${toString cfg.mediaPath}/movies"; + ANIME = "${toString cfg.mediaPath}/anime"; + ARCHIVE = "${toString cfg.mediaPath}/archive"; + }; }; } diff --git a/hm/conf/xdg-mime.nix b/hm/conf/xdg-mime.nix new file mode 100644 index 0000000..0f55c5d --- /dev/null +++ b/hm/conf/xdg-mime.nix @@ -0,0 +1,49 @@ +{ config, lib, ... }: +let + cfg = config.hm.conf.xdg-mime; +in +{ + options.hm.conf.xdg-mime = { + enable = lib.mkEnableOption "sets the default applications"; + }; + config = lib.mkIf cfg.enable { + xdg.mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = [ "org.pwmt.zathura.desktop" ]; + "application/x-bzpdf" = [ "org.pwmt.zathura.desktop" ]; + "application/x-gzpdf" = [ "org.pwmt.zathura.desktop" ]; + "application/epub+zip" = [ "org.pwmt.zathura.desktop" ]; + + "image/png" = [ "nsxiv.desktop" ]; + "image/jpeg" = [ "nsxiv.desktop" ]; + "image/gif" = [ "nsxiv.desktop" ]; + "image/webp" = [ "nsxiv.desktop" ]; + "image/bmp" = [ "nsxiv.desktop" ]; + + "video/mp4" = [ "mpv.desktop" ]; + "video/x-matroska" = [ "mpv.desktop" ]; + "video/webm" = [ "mpv.desktop" ]; + "video/quicktime" = [ "mpv.desktop" ]; + + "audio/mpeg" = [ "mpv.desktop" ]; + "audio/flac" = [ "mpv.desktop" ]; + "audio/wav" = [ "mpv.desktop" ]; + "audio/ogg" = [ "mpv.desktop" ]; + + "text/html" = [ "firefox.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; + "inode/directory" = [ "thunar.desktop" ]; + }; + }; + home.sessionVariables = { + EDITOR = "nvim"; + VISUAL = "nvim"; + BROWSER = "librewolf"; + TERMINAL = "foot"; + GPG_TTY = "$(tty)"; + COLORTERM = "truecolor"; + }; + }; +} diff --git a/hm/editors/nixvim.nix b/hm/editors/nixvim.nix index e46f6e2..9db6bff 100644 --- a/hm/editors/nixvim.nix +++ b/hm/editors/nixvim.nix @@ -33,6 +33,9 @@ in }; opts = { + smartindent = true; + autoindent = true; + breakindent = true; number = true; relativenumber = true; termguicolors = true; @@ -188,6 +191,7 @@ in treesitter-context = { enable = true; settings = { + indent.enable = true; max_lines = 2; trim_scope = "outer"; }; diff --git a/hm/shell/cli.nix b/hm/shell/cli.nix index 142fda5..2716e00 100644 --- a/hm/shell/cli.nix +++ b/hm/shell/cli.nix @@ -3,21 +3,22 @@ lib, pkgs, ... -}: let +}: +let cfg = config.hm.shell.cli; -in { +in +{ options.hm.shell.cli.enable = lib.mkEnableOption "modern cli tools"; config = lib.mkIf cfg.enable { programs.zoxide = { enable = true; - options = ["--cmd cd"]; + 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; @@ -60,24 +61,44 @@ in { ]; }; }; - programs.direnv.enable = true; - programs.jq.enable = true; + # programs.direnv = { + # enable = true; + # nix-direnv.enable = true; + # }; programs.nix-your-shell = { enable = true; enableFishIntegration = true; nix-output-monitor.enable = true; }; + programs.bottom = { + enable = true; + }; + programs.tealdeer = { + enable = true; + }; + # programs.lazygit = { + # enable = true; + # enableFishIntegration = true; + # }; + programs.riff.enable = true; + programs.pls.enable = true; + programs.nix-index.enable = true; home.packages = with pkgs; [ + sd + choose + doggo + gping + comma + dust nix-search-cli srm file - mediainfo - chafa hexyl procs - yq-go - tldr + + chafa + ffmpeg ]; }; } diff --git a/hm/shell/fish.nix b/hm/shell/fish.nix index 88a4493..6338cb1 100644 --- a/hm/shell/fish.nix +++ b/hm/shell/fish.nix @@ -1,4 +1,9 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let cfg = config.hm.shell.fish; in @@ -14,22 +19,19 @@ in ''; shellAliases = { - update = "git add . && git commit -m \"$1\" && nh os switch ."; + update = "git add . && git commit -m \"$1\" && nix flake update && nh os switch ."; nos = "nh os switch ."; nob = "nh os boot ."; nfu = "nix flake update"; - - ll = "ls -lah"; - la = "ls -A"; + md = "mkdir -p"; rmf = "rm -rf"; untar = "tar -xzvf"; tarc = "tar -czvf"; - + ff = "fastfetch"; cat = "bat"; - ls = "eza"; yt = "yt-dlp"; }; diff --git a/hm/soft/easyeffects.nix b/hm/soft/easyeffects.nix deleted file mode 100644 index ab16736..0000000 --- a/hm/soft/easyeffects.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.hm.soft.easyeffects; -in -{ - options.hm.soft.easyeffects.enable = lib.mkEnableOption "EasyEffects audio equalizer"; - config = lib.mkIf cfg.enable { - services.easyeffects = { - enable = true; - }; - }; -} diff --git a/hm/soft/media.nix b/hm/soft/media.nix index 8dcd6de..b307904 100644 --- a/hm/soft/media.nix +++ b/hm/soft/media.nix @@ -3,15 +3,61 @@ lib, pkgs, ... -}: let +}: +let cfg = config.hm.soft.media; -in { +in +{ options.hm.soft.media.enable = lib.mkEnableOption "media cli tools"; config = lib.mkIf cfg.enable { + programs.zathura = { + enable = true; + package = pkgs.zathura.override { + plugins = with pkgs.zathuraPkgs; [ + zathura_pdf_mupdf + zathura_cb + ]; + }; + options = { + selection-clipboard = "clipboard"; + + incremental-search = true; + highlight-active-color = "#fabd2f"; + highlight-color = "#fe8019"; + + recolor = true; + recolor-keephue = true; + + default-bg = "#282828"; + default-fg = "#ebdbb2"; + recolor-lightcolor = "#282828"; + recolor-darkcolor = "#ebdbb2"; + + render-loading = false; + scroll-step = 50; + statusbar-h-padding = 10; + statusbar-v-padding = 10; + }; + + mappings = { + "u" = "scroll half-up"; + "d" = "scroll half-down"; + "D" = "toggle_page_mode"; + "r" = "reload"; + "R" = "rotate"; + "K" = "zoom in"; + "J" = "zoom out"; + "i" = "recolor"; + }; + }; home.packages = with pkgs; [ + nsxiv pinta ffmpeg imagemagick + exiftool + mediainfo + sox syncplay-nogui ]; }; diff --git a/hm/soft/obs.nix b/hm/soft/obs.nix index 29c82a4..8d968e4 100644 --- a/hm/soft/obs.nix +++ b/hm/soft/obs.nix @@ -2,10 +2,13 @@ config, lib, pkgs, + osConfig, ... }: let cfg = config.hm.soft.obs; + + obsPass = osConfig.sops.placeholdder."obs/websocket_password" or null; in { options.hm.soft.obs.enable = lib.mkEnableOption "enables obs video recording and clipping"; @@ -16,9 +19,11 @@ in obs-pipewire-audio-capture ]; }; + home.packages = [ pkgs.obs-cmd ]; - home.sessionVariables = { - OBS_WEBSOCKET_URL = "obsws://localhost:4455/3uE66N4j0bTv2W1M"; + + home.sessionVariables = lib.mkIf (obsPass != null) { + OBS_WEBSOCKET_URL = obsPass; }; }; } diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix index 4372d3f..0d74669 100644 --- a/hm/soft/soft.nix +++ b/hm/soft/soft.nix @@ -2,7 +2,6 @@ { imports = [ ./browser.nix - ./easyeffects.nix ./email.nix ./kdenlive.nix ./mangohud.nix diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index 9ea9552..f825848 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -3,7 +3,8 @@ inputs, username, ... -}: { +}: +{ system.stateVersion = "25.05"; imports = [ @@ -56,6 +57,8 @@ users.enable = true; }; srv = { + sops.enable = true; + syncthing.enable = true; files = { thunar.enable = true; krusader.enable = true; @@ -81,18 +84,9 @@ }; }; - services.zerotierone.enable = true; - - xdg.terminal-exec = { - enable = true; - settings = { - default = ["foot.desktop"]; - }; - }; - boot = { - kernelParams = ["video=DP-1:2560x1440@240"]; - kernelModules = ["nct6687"]; + kernelParams = [ "video=DP-1:2560x1440@240" ]; + kernelModules = [ "nct6687" ]; extraModulePackages = [ config.boot.kernelPackages.nct6687d ]; diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 5dfb31e..5eb1635 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -2,8 +2,9 @@ username, pkgs, ... -}: { - imports = [../../hm/default.nix]; +}: +{ + imports = [ ../../hm/default.nix ]; home = { username = "${username}"; @@ -22,6 +23,7 @@ enable = true; mediaPath = /storage; }; + xdg-mime.enable = true; }; editors.nixvim.enable = true; env = { @@ -71,8 +73,8 @@ xdg.mimeApps = { enable = true; defaultApplications = { - "x-scheme-handler/terminal" = ["foot.desktop"]; - "inode/directory" = ["thunar.desktop"]; + "x-scheme-handler/terminal" = [ "foot.desktop" ]; + "inode/directory" = [ "thunar.desktop" ]; }; }; diff --git a/os/srv/gaming.nix b/os/srv/gaming.nix index 9ac8c88..f0ff771 100644 --- a/os/srv/gaming.nix +++ b/os/srv/gaming.nix @@ -27,6 +27,8 @@ in }; environment.systemPackages = with pkgs; [ + openttd-jgrpp + ludusavi protonplus openmw heroic diff --git a/os/srv/sops.nix b/os/srv/sops.nix new file mode 100644 index 0000000..85a5123 --- /dev/null +++ b/os/srv/sops.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + username, + ... +}: +let + cfg = config.os.srv.sops; +in +{ + options.os.srv.sops.enable = lib.mkEnableOption "enables sops-nix secret storing"; + config = lib.mkIf cfg.enable { + sops = { + defaultSopsFile = ../../secrets.yaml; + defaultSopsFormat = "yaml"; + age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; + + secrets = { + "syncthing/gui_password" = { + owner = config.services.syncthing.user; + }; + "obs/websocket_password" = { + owner = username; + }; + }; + }; + }; +} diff --git a/os/srv/srv.nix b/os/srv/srv.nix index 6109361..0e2a4f7 100644 --- a/os/srv/srv.nix +++ b/os/srv/srv.nix @@ -1,6 +1,8 @@ { ... }: { imports = [ + ./syncthing.nix + ./sops.nix ./bluetooth.nix ./compat.nix ./docker.nix diff --git a/os/srv/syncthing.nix b/os/srv/syncthing.nix new file mode 100644 index 0000000..1531c04 --- /dev/null +++ b/os/srv/syncthing.nix @@ -0,0 +1,54 @@ +{ + config, + lib, + username, + ... +}: +let + cfg = config.os.srv.syncthing; +in +{ + options.os.srv.syncthing.enable = lib.mkEnableOption "enables syncthing syncing"; + config = lib.mkIf cfg.enable { + services.syncthing = { + enable = true; + user = "${username}"; + dataDir = "/home/${username}/.local/share/syncthing"; + configDir = "/home/${username}/.config/syncthing"; + guiPasswordFile = config.sops.secrets."syncthing/gui_password".path; + + settings = { + devices = { + "desktop" = { + id = "YGMWGOB-LTJUDM7-CY25MAF-NPE7J4J-KYRNPB5-ZHD5DBI-VNRAXI6-LIP2DQP"; + }; + "laptop" = { + id = ""; + }; + "thinkpad" = { + id = ""; + }; + }; + folders = { + "game-saves" = { + path = "/home/${username}/.saves"; + id = "shared-saves-v1"; + devices = [ + "desktop" + "laptop" + "thinkpad" + ]; + + versioning = { + type = "staggered"; + params = { + cleanInterval = "3600"; + maxAge = "2592000"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/secrets.yaml b/secrets.yaml new file mode 100644 index 0000000..da1b6a6 --- /dev/null +++ b/secrets.yaml @@ -0,0 +1,40 @@ +syncthing: + gui_password: ENC[AES256_GCM,data:9sivtxELQRCD+q1OFMmL9OwMnem22VxFRN9twVdnMlTMmtxplO/KmezuLt+SUpfhDne0i9cTliiqCm16bQb3fFQWplJIyQDRgIGr1Y7r4boGtvJ95oSIW3bmwJW+IkYyYysKbcNrTGfdWVS6lJWYfenhonNfWESxqo1CW81BxBY=,iv:tYxoE/pxBBFrbiuc3ZVJe9rZfnVo9QSJOtl1NlPHyNg=,tag:eUwgow5ZkkuMoXrUAZughg==,type:str] +obs: + websocket_password: ENC[AES256_GCM,data:eska/qJsOAiQpq3uHNIIHKobsdN2rnkfLznOMkVHWEmOiynBM5tl,iv:y6cwkZUPiBU671QFq/xEKQATWI9BYAvNRbgiGTF/550=,tag:b5G4PNFl1bmVmHjC7cwvHw==,type:str] +sops: + age: + - recipient: age1s39d4mdrjhkf8cy8eea02p836r7s875fj8f7w3z4ld2stmaac49qd075ww + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDU1dLa2I0TGxZU2tCbC84 + enZKaU1JSEV6K0srZURUWU8wc2RiME1XcEVzCldYeDJ6dFg5b1R3SzlQa3M2ZkRT + azZZTjBNWW5wMzliQWVNMTFVbk1ZTTQKLS0tIEJFS1BSUTlHYWR1OVZ5TTZqT3pZ + SDlaeG9YRWw4UVRLeWh1ZzlnUlBVc3cKeXyBZ7UA+6iHiXElOdht0obhY8REdxc5 + RX0HCXbn+wCEopmL9q/wRb4ClY2V1fExWGlwPz9teas1C5w6dQyYfQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2026-02-08T16:52:28Z" + mac: ENC[AES256_GCM,data:g+wLh8XKiQkXQ+gv544j7avOduUpdtcGqxMPcHAFMKyoL/2T8NqZftzjuGkJ5b9kSmDCs/LsQDeFmbn/dbhxL3TSf/VhYB/oL6YkvtEglYuYp1h33OWnT25PUq1xch/7xmFHGdy8y0vQM6rrUxBKoHiCpZJmI1hi9QgS/2IMX5U=,iv:g50gGCHNgsIrkMH392ODYaDmvUBqtnxOlfrT0Ft6Vwo=,tag:1oW5vXAQkwYp70mtDtLuZA==,type:str] + pgp: + - created_at: "2026-02-08T16:13:33Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hQIMA/mKtLqB941HAQ/7BuEq3LeupBN6bNHOOdKszlEj0q/UoZULvSDAABF7EwVL + WCqqPe4N61HMXsAk41KiRRxqs9dc9KFtdRq89QZ/zZrN+cdk5GAfQikQNNdrGnfz + yZV7Rs/gZjeD0E73PH/YEucDXvDypcIHtgfydb9zxOhx9LLIJYxOSRL+QrftvwER + ah6ZIAPQ/O9TpqWPUoQlsKNu31WcN0iJK9a8MwCfGAsIym6E8xjyydtKHoJm8sNi + aMjJIttwoqJPXKinezp2pdb5lnI3EfP9uHFnHrhRBfP5Ex8F06ZjQ1wg08PzzYms + 9SGlMNdbhJXIPwty9/z3xrovJXTTOczty5wbTOTGaP6gdA6vNgmGXxG6ko19wyQf + R3IzPcmLIvi/KU4kpxP3h1ImnSo2QTWsTXJbCx+A73HB+Q6ygGDceRazeO8lXlxt + bucbEd7mRNhnXiyxMFVhVVFRN/WYcBnx7O36aRdOvo33CiWaXEqaGgYFagNU4OBI + 1Pj0WwG32ZIPyV4X2SsUdxPo9fHowSDRX7LrvIF63WXyFWu3hp/xVU/ZMaDzFkMa + nXh+QrcUbxomQ8MSJbi1Te3QgAoIabX5Efswn+eWi/HxNhR75y7ztHrnGrBJTMu5 + wunlhoGKp6/vVgWvxDjODZ/qZJ4P2xpnke3mf/3a8UUiR6gT+bXCXJ5LGd0D+VzS + XgEOQslT/HU2M+XMBJcJo47l/C1tIhaDnLfbhuKWUsxh1b3YlVKvHLd0nvVmXXL3 + 8yDk6J1f7FRl4Orj+Z077975EpDzMtAgq2u/x0cA4IgfZ2qDh3eEjJzoHzGgjq4= + =mJgc + -----END PGP MESSAGE----- + fp: EF69F2FB25C8B5A66918EA91A38ACEAB9656CD94 + unencrypted_suffix: _unencrypted + version: 3.11.0 -- cgit v1.3