16 Commits

Author SHA1 Message Date
Hadi f56bf4402c stirlingpdf -> bentopdf
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 15:18:37 +02:00
Hadi 6953622559 update server conf
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 15:06:33 +02:00
Hadi 5076c244db mkIf impermanence
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:57:11 +02:00
Hadi 9a3fa6f4a9 add wl-clipboard
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:37:48 +02:00
Hadi 735cd50059 Add recipient
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:21:36 +02:00
Hadi 663439dcdf change passphrase
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:20:08 +02:00
Hadi 61ecbdb8d3 add python to dev deps
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:15:16 +02:00
Hadi 3f67868830 use the system's font
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:15:09 +02:00
Hadi a50e14d04c chmod secrets
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:14:54 +02:00
Hadi 40dea7c9bc container use the local DNS
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:14:47 +02:00
Hadi 6a2adfb338 change import script
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:14:01 +02:00
Hadi 2affa2a8ec rebase
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 14:13:41 +02:00
Hadi 60d850c2bc change work password
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 13:10:50 +02:00
Hadi 5d0ef403e3 update the wallpaper url & hash
Signed-off-by: Hadi <hadi@example.fr>
2026-08-17 11:47:52 +02:00
Hadi ac008183bd add the flake to work
Signed-off-by: Hadi <hadi@example.com>
2026-08-17 11:00:37 +02:00
Hadi a4b07fa578 add work's conf
Signed-off-by: Hadi <hadi@example.com>
2026-08-17 10:49:37 +02:00
46 changed files with 559 additions and 522 deletions
+5
View File
@@ -10,3 +10,8 @@ creation_rules:
key_groups:
- age:
- *primary
- path_regex: hosts/work/secrets/secrets.yaml$
key_groups:
- age:
- *work
- *primary
Generated
+27 -269
View File
@@ -1,24 +1,5 @@
{
"nodes": {
"awesome-wallpapers": {
"inputs": {
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1786698894,
"narHash": "sha256-yZHP8Tqn/ClxwGCTsZnyT5HRFGRY0eeMWtlK43qJbtc=",
"owner": "anotherhadi",
"repo": "awesome-wallpapers",
"rev": "deda1a9868be6f516405115068f3ed5038395340",
"type": "github"
},
"original": {
"owner": "anotherhadi",
"repo": "awesome-wallpapers",
"type": "github"
}
},
"base16": {
"inputs": {
"fromYaml": "fromYaml"
@@ -90,7 +71,7 @@
"blog": {
"inputs": {
"bun2nix": "bun2nix",
"nixpkgs": "nixpkgs_2"
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1780522780,
@@ -156,35 +137,10 @@
"type": "github"
}
},
"bun2nix_3": {
"inputs": {
"flake-parts": "flake-parts_3",
"import-tree": "import-tree_3",
"nixpkgs": [
"iknowyou",
"nixpkgs"
],
"systems": "systems_3",
"treefmt-nix": "treefmt-nix_3"
},
"locked": {
"lastModified": 1770895533,
"narHash": "sha256-v3QaK9ugy9bN9RXDnjw0i2OifKmz2NnKM82agtqm/UY=",
"owner": "nix-community",
"repo": "bun2nix",
"rev": "c843f477b15f51151f8c6bcc886954699440a6e1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "bun2nix",
"type": "github"
}
},
"default-creds": {
"inputs": {
"bun2nix": "bun2nix_2",
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1780323652,
@@ -253,22 +209,6 @@
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1777699697,
@@ -321,24 +261,6 @@
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"nur",
@@ -359,7 +281,7 @@
"type": "github"
}
},
"flake-parts_5": {
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@@ -399,28 +321,6 @@
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"awesome-wallpapers",
"nixpkgs"
]
},
"locked": {
"lastModified": 1784288435,
"narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"git-hooks_2": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
]
@@ -518,30 +418,10 @@
"type": "github"
}
},
"iknowyou": {
"inputs": {
"bun2nix": "bun2nix_3",
"nixpkgs": "nixpkgs_4",
"nur-osint": "nur-osint"
},
"locked": {
"lastModified": 1779949739,
"narHash": "sha256-axo7EprQSm8yYL4P6Ye9EZGEz/bdh8HHkmBlRIQzzvM=",
"owner": "anotherhadi",
"repo": "iknowyou",
"rev": "bb778b43747b7e703e2c311a898198c4a89ac12a",
"type": "github"
},
"original": {
"owner": "anotherhadi",
"repo": "iknowyou",
"type": "github"
}
},
"impermanence": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_5"
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1769548169,
@@ -587,21 +467,6 @@
"type": "github"
}
},
"import-tree_3": {
"locked": {
"lastModified": 1763762820,
"narHash": "sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0=",
"owner": "vic",
"repo": "import-tree",
"rev": "3c23749d8013ec6daa1d7255057590e9ca726646",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"mnw": {
"locked": {
"lastModified": 1780772958,
@@ -639,28 +504,28 @@
},
"nixarr": {
"inputs": {
"nixpkgs": "nixpkgs_6",
"treefmt-nix": "treefmt-nix_4",
"nixpkgs": "nixpkgs_4",
"treefmt-nix": "treefmt-nix_3",
"vpnconfinement": "vpnconfinement",
"website-builder": "website-builder"
},
"locked": {
"lastModified": 1784997863,
"narHash": "sha256-oTMag4I9MW3bstuOKqzc0F1OqxO49lLa9jkSkRe3EqA=",
"owner": "rasmus-kirk",
"owner": "nix-media-server",
"repo": "nixarr",
"rev": "282ce99b31d52d72cca281e3d26d3dd267946800",
"type": "github"
},
"original": {
"owner": "rasmus-kirk",
"owner": "nix-media-server",
"repo": "nixarr",
"type": "github"
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_7"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1786528975,
@@ -678,16 +543,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1786535285,
"narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=",
"owner": "nixos",
"lastModified": 1776548001,
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9f78f44a87948854445dae0b6bf82b2e87e4efb5",
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-26.05",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
@@ -722,21 +587,6 @@
"type": "github"
}
},
"nixpkgs-lib_3": {
"locked": {
"lastModified": 1769909678,
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "72716169fe93074c333e8d0173151350670b824c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1786599213,
@@ -754,22 +604,6 @@
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1776548001,
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1772773019,
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
@@ -785,23 +619,7 @@
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_3": {
"locked": {
"lastModified": 1768564909,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
@@ -817,7 +635,7 @@
"type": "github"
}
},
"nixpkgs_6": {
"nixpkgs_4": {
"locked": {
"lastModified": 1775595990,
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
@@ -833,7 +651,7 @@
"type": "github"
}
},
"nixpkgs_7": {
"nixpkgs_5": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
@@ -846,7 +664,7 @@
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_8": {
"nixpkgs_6": {
"locked": {
"lastModified": 1786535285,
"narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=",
@@ -862,7 +680,7 @@
"type": "github"
}
},
"nixpkgs_9": {
"nixpkgs_7": {
"locked": {
"lastModified": 1784796856,
"narHash": "sha256-vwxWgF+Gj276WznzGb1LxGsK/39HaQwgQXiU3EkC844=",
@@ -877,7 +695,7 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_3",
"nixpkgs": [
"nixpkgs"
]
@@ -896,27 +714,6 @@
"type": "github"
}
},
"nur-osint": {
"inputs": {
"nixpkgs": [
"iknowyou",
"nixpkgs"
]
},
"locked": {
"lastModified": 1775935554,
"narHash": "sha256-7StMiQf3HSBruAxZ2/ZYJhhNEp1KbglGVijQBrurqiM=",
"owner": "anotherhadi",
"repo": "nur-osint",
"rev": "460e377522a43d3d968be20bec2cf40a72013904",
"type": "github"
},
"original": {
"owner": "anotherhadi",
"repo": "nur-osint",
"type": "github"
}
},
"nur_2": {
"inputs": {
"flake-parts": [
@@ -944,9 +741,9 @@
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-compat": "flake-compat_2",
"mnw": "mnw",
"nixpkgs": "nixpkgs_9"
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1786433999,
@@ -983,19 +780,17 @@
},
"root": {
"inputs": {
"awesome-wallpapers": "awesome-wallpapers",
"blog": "blog",
"default-creds": "default-creds",
"disko": "disko",
"git-hooks": "git-hooks_2",
"git-hooks": "git-hooks",
"helium-browser": "helium-browser",
"home-manager": "home-manager",
"iknowyou": "iknowyou",
"impermanence": "impermanence",
"nix-index-database": "nix-index-database",
"nixarr": "nixarr",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_8",
"nixpkgs": "nixpkgs_6",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur",
"nvf": "nvf",
@@ -1031,13 +826,13 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_4",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur_2",
"systems": "systems_4",
"systems": "systems_3",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
@@ -1103,21 +898,6 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
@@ -1227,28 +1007,6 @@
}
},
"treefmt-nix_3": {
"inputs": {
"nixpkgs": [
"iknowyou",
"bun2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770228511,
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_4": {
"inputs": {
"nixpkgs": [
"nixarr",
+2 -3
View File
@@ -50,11 +50,9 @@
};
# Server
nixarr.url = "github:rasmus-kirk/nixarr";
nixarr.url = "github:nix-media-server/nixarr";
default-creds.url = "github:anotherhadi/default-creds";
blog.url = "github:anotherhadi/blog";
awesome-wallpapers.url = "github:anotherhadi/awesome-wallpapers";
iknowyou.url = "github:anotherhadi/iknowyou";
};
outputs = inputs @ {
@@ -93,6 +91,7 @@
apps.${system}.nvim = inputs.nvf-config.apps.${system}.nvim;
nixosConfigurations = {
h-laptop = import ./hosts/laptop/flake.nix args;
h-work = import ./hosts/work/flake.nix args;
jack = import ./hosts/server/flake.nix args;
};
devShells = forAllSystems (system: pkgs: {
+9 -2
View File
@@ -1,4 +1,9 @@
{pkgs, ...}: {
{
pkgs,
config,
lib,
...
}: {
home.packages = import ./cybersecurity-packages.nix {
inherit pkgs;
};
@@ -38,7 +43,9 @@
};
};
home.persistence."/persist".directories = [
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
"Cyber"
];
};
}
+3 -1
View File
@@ -1,6 +1,8 @@
{
pkgs,
pkgs-unstable,
config,
lib,
...
}: {
home = {
@@ -19,7 +21,7 @@
rsync
]);
persistence."/persist" = {
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".claude"
];
+3 -1
View File
@@ -137,7 +137,9 @@ in {
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
};
home.persistence."/persist".directories = [
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".config/net.imput.helium"
];
};
}
+9 -2
View File
@@ -1,4 +1,9 @@
{pkgs, ...}: {
{
pkgs,
config,
lib,
...
}: {
home.packages = with pkgs; [
vlc # Video player
obsidian # Note taking app
@@ -13,9 +18,11 @@
gnome-text-editor
];
home.persistence."/persist".directories = [
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".config/ticktick"
".config/Signal"
".config/obsidian"
];
};
}
+4 -1
View File
@@ -1,6 +1,7 @@
{
pkgs,
config,
lib,
...
}: {
home.packages = with pkgs; [
@@ -28,8 +29,10 @@
};
};
home.persistence."/persist".directories = [
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".config/protonvpn"
".config/Proton Pass"
];
};
}
+1 -2
View File
@@ -24,11 +24,10 @@ in {
user.name = username;
user.email = email;
init.defaultBranch = "main";
pull.rebase = "false";
pull.rebase = "true";
push.autoSetupRemote = true;
color.ui = "1";
alias = {
essa = "push --force";
co = "checkout";
fuck = "commit --amend -m";
c = "commit -m";
+5 -1
View File
@@ -1,6 +1,8 @@
{
pkgs,
pkgs-unstable,
config,
lib,
...
}: {
home.packages = with pkgs; [
@@ -38,5 +40,7 @@
smassh # typing test, 10fastfinger like
];
home.persistence."/persist".directories = [".config/gh" ".config/gh-dash"];
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [".config/gh" ".config/gh-dash"];
};
}
+3 -1
View File
@@ -15,7 +15,9 @@
COLORTERM = "truecolor";
MANPAGER = "bat -l man -p";
};
persistence."/persist".files = [".zsh_history"];
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
files = [".zsh_history"];
};
};
programs.zsh = {
+4 -1
View File
@@ -2,6 +2,7 @@
{
config,
pkgs,
lib,
...
}: let
c = config.lib.stylix.colors;
@@ -11,7 +12,9 @@ in {
spotatui
];
home.persistence."/persist".directories = [".config/spotatui" ".config/spotify"];
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [".config/spotatui" ".config/spotify"];
};
home.file.".config/spotatui/config.yml".text = ''
keybindings:
+2
View File
@@ -3,6 +3,8 @@
# script (tofi). Uses the home-manager module so the watcher services are
# managed the same way as swaync/hypridle.
{pkgs, ...}: {
home.packages = [pkgs.wl-clipboard];
services.cliphist = {
enable = true;
allowImages = true;
+1 -1
View File
@@ -2,10 +2,10 @@
pkgs,
lib,
config,
scripts,
...
}: let
colors = config.lib.stylix.colors;
scripts = import ../waybar/scripts.nix {inherit pkgs config;};
border-size = config.theme.border-size;
mkMenu = menu: let
+5 -5
View File
@@ -19,7 +19,7 @@ in {
text = ''cmd[update:0] echo "[$USER@$(hostname) ~]"'';
color = "rgb(${c.base0D})";
font_size = 13;
font_family = "Maple Mono NF";
font_family = config.stylix.fonts.monospace.name;
position = "48, -48";
halign = "left";
valign = "top";
@@ -29,7 +29,7 @@ in {
text = ''cmd[update:1000] echo "$(date +'%H:%M:%S')"'';
color = "rgb(${c.base05})";
font_size = 13;
font_family = "Maple Mono NF";
font_family = config.stylix.fonts.monospace.name;
position = "48, -70";
halign = "left";
valign = "top";
@@ -39,7 +39,7 @@ in {
text = ''cmd[update:60000] echo "$(date +'%A %d %B %Y')"'';
color = "rgb(${c.base04})";
font_size = 13;
font_family = "Maple Mono NF";
font_family = config.stylix.fonts.monospace.name;
position = "48, -92";
halign = "left";
valign = "top";
@@ -49,7 +49,7 @@ in {
text = "passwd:";
color = "rgb(${c.base0D})";
font_size = 13;
font_family = "Maple Mono NF";
font_family = config.stylix.fonts.monospace.name;
position = "48, -141";
halign = "left";
valign = "top";
@@ -70,7 +70,7 @@ in {
rounding = 0;
check_color = "rgb(${c.base0B})";
fail_color = "rgb(${c.base08})";
fail_text = ''<span font_desc="Maple Mono NF 13">auth failed</span>'';
fail_text = ''<span font_desc="${config.stylix.fonts.monospace.name} 13">auth failed</span>'';
capslock_color = "rgb(${c.base0A})";
position = "116, -138";
halign = "left";
+1 -1
View File
@@ -1,9 +1,9 @@
{
config,
pkgs,
scripts,
...
}: let
scripts = import ../waybar/scripts.nix {inherit pkgs config;};
c = config.lib.stylix.colors;
font = config.stylix.fonts.sansSerif.name;
monofont = config.stylix.fonts.monospace.name;
+2 -4
View File
@@ -1,10 +1,8 @@
{
pkgs,
config,
scripts,
...
}: let
scripts = import ../waybar/scripts.nix {inherit pkgs config;};
in {
}: {
xdg.desktopEntries = {
focus-toggle = {
name = "Focus Mode";
+2
View File
@@ -10,6 +10,8 @@ in {
./style.nix
];
_module.args.scripts = scripts;
_module.args.osdPath = scripts.osdPath;
_module.args.networkScript = scripts.networkScript;
_module.args.bluetoothScript = scripts.bluetoothScript;
_module.args.volMuteScript = scripts.vol-mute;
+23 -22
View File
@@ -6,7 +6,7 @@
name = "waybar-osd";
runtimeInputs = with pkgs; [procps coreutils];
text = ''
printf '%s' "$1" > /tmp/waybar-osd
printf '%s' "$1" > "$XDG_RUNTIME_DIR/waybar-osd"
pkill -f -RTMIN+8 '^waybar$' 2>/dev/null || true
'';
};
@@ -15,7 +15,7 @@
name = "waybar-osd-status";
runtimeInputs = with pkgs; [coreutils];
text = ''
file=/tmp/waybar-osd
file="$XDG_RUNTIME_DIR/waybar-osd"
[ -f "$file" ] || exit 1
mtime=$(stat -c %Y "$file" 2>/dev/null) || exit 1
age=$(( $(date +%s) - mtime ))
@@ -86,8 +86,9 @@
jq -r 'to_entries[] | select(.key != "METADATA") | "\(.value.char) \(.key)"' \
${nerdFontGlyphnames} > "$out"
'';
osdPath = "$XDG_RUNTIME_DIR/waybar-osd";
in {
inherit waybar-osd waybar-osd-status battery-monitor;
inherit waybar-osd waybar-osd-status battery-monitor osdPath;
bluetoothScript = pkgs.writeShellScript "waybar-bluetooth" ''
jq=${pkgs.jq}/bin/jq
@@ -234,19 +235,19 @@ in {
'';
wifi-toggle = pkgs.writeShellScriptBin "wifi-toggle" ''
if nmcli radio wifi | grep -q enabled; then
nmcli radio wifi off
if ${pkgs.networkmanager}/bin/nmcli radio wifi | grep -q enabled; then
${pkgs.networkmanager}/bin/nmcli radio wifi off
else
nmcli radio wifi on
${pkgs.networkmanager}/bin/nmcli radio wifi on
fi
${updateOsd}
'';
bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" ''
if bluetoothctl show | grep -q "Powered: yes"; then
bluetoothctl power off
if ${pkgs.bluez}/bin/bluetoothctl show | grep -q "Powered: yes"; then
${pkgs.bluez}/bin/bluetoothctl power off
else
bluetoothctl power on
${pkgs.bluez}/bin/bluetoothctl power on
fi
${updateOsd}
'';
@@ -260,7 +261,7 @@ in {
'';
nightshift-toggle = pkgs.writeShellScriptBin "nightshift-toggle" ''
if pidof "hyprsunset" > /dev/null; then
if ${pkgs.procps}/bin/pidof "hyprsunset" > /dev/null; then
pkill hyprsunset
OSD_TEXT="󰖔 Night Shift Off"
else
@@ -271,23 +272,23 @@ in {
'';
focus-toggle = pkgs.writeShellScriptBin "focus-toggle" ''
if test -f /tmp/hypr-focus-mode; then
rm /tmp/hypr-focus-mode
if test -f "$XDG_RUNTIME_DIR/hypr-focus-mode"; then
rm "$XDG_RUNTIME_DIR/hypr-focus-mode"
OSD_TEXT="󰈈 Focus Off"
${updateOsd}
hyprctl reload
hyprctl dispatch exec waybar
${pkgs.hyprland}/bin/hyprctl reload
${pkgs.hyprland}/bin/hyprctl dispatch exec waybar
else
touch /tmp/hypr-focus-mode
touch "$XDG_RUNTIME_DIR/hypr-focus-mode"
OSD_TEXT="󰈈 Focus On"
${updateOsd}
pkill waybar || true
hyprctl keyword animations:enabled false
hyprctl keyword general:gaps_in 0
hyprctl keyword general:gaps_out 0
hyprctl keyword decoration:active_opacity 1
hyprctl keyword decoration:inactive_opacity 1
hyprctl keyword decoration:rounding 0
${pkgs.procps}/bin/pkill waybar || true
${pkgs.hyprland}/bin/hyprctl keyword animations:enabled false
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_in 0
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_out 0
${pkgs.hyprland}/bin/hyprctl keyword decoration:active_opacity 1
${pkgs.hyprland}/bin/hyprctl keyword decoration:inactive_opacity 1
${pkgs.hyprland}/bin/hyprctl keyword decoration:rounding 0
fi
'';
+2 -1
View File
@@ -1,6 +1,7 @@
{
config,
pkgs,
osdPath,
networkScript,
bluetoothScript,
caffeineToggleScript,
@@ -76,7 +77,7 @@ in {
};
"custom/osd" = {
exec = "cat /tmp/waybar-osd";
exec = "cat ${osdPath}";
exec-if = "${osdStatusScript}/bin/waybar-osd-status";
signal = 8;
interval = 1;
+2 -1
View File
@@ -1,6 +1,7 @@
{
config,
inputs,
lib,
...
}: {
imports = [
@@ -49,7 +50,7 @@
inherit (config.var) username;
homeDirectory = "/home/" + config.var.username;
persistence."/persist" = {
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".config/nixos" # this repo itself (nixy manages it here)
".local/share"
+6
View File
@@ -14,26 +14,32 @@ in {
secrets = {
ssh-config = {
owner = username;
mode = "0600";
path = "${home}/.ssh/config";
};
ssh-github-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/github";
};
anotherhadi-pgp-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/anotherhadi-priv.asc";
};
ssh-jack-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/jack";
};
signing-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/key";
};
signing-pub-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/key.pub";
};
};
+1
View File
@@ -26,6 +26,7 @@
autoUpgrade = false;
autoGarbageCollector = true;
impermanenceEnabled = true;
};
# DON'T TOUCH THIS
+2 -6
View File
@@ -16,17 +16,13 @@
../../server-modules/adguardhome.nix
../../server-modules/arr.nix
../../server-modules/blog.nix
../../server-modules/awesome-wallpapers.nix
../../server-modules/iknowyou.nix
../../server-modules/stirling-pdf.nix
../../server-modules/bentopdf.nix
../../server-modules/cyberchef.nix
../../server-modules/mazanoke.nix
../../server-modules/kernel-hardening.nix
../../server-modules/fail2ban.nix
../../server-modules/default-creds.nix
../../server-modules/umami.nix
../../server-modules/gitea.nix
../../server-modules/mealie.nix
# You should let those lines as is
./hardware-configuration.nix
@@ -38,5 +34,5 @@
home-manager.users."${config.var.username}" = import ./home.nix;
# Don't touch this
system.stateVersion = "24.05";
system.stateVersion = "26.05";
}
+7 -1
View File
@@ -6,13 +6,19 @@
}:
nixpkgs.lib.nixosSystem {
modules = [
{_module.args = {inherit inputs pkgs-unstable;};}
{
nixpkgs.overlays = [
inputs.nur.overlays.default
];
_module.args = {inherit inputs pkgs-unstable;};
}
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
inputs.nixarr.nixosModules.default
inputs.nix-index-database.nixosModules.default
inputs.default-creds.nixosModules.default
inputs.impermanence.nixosModules.impermanence
./configuration.nix
];
}
+10 -5
View File
@@ -4,18 +4,23 @@
...
}: {
imports = [
# Mostly user-specific configuration
./variables.nix
# Programs
## TUI
inputs.nvf-config.homeManagerModules.default
../../home/programs/tui/ilovetui
../../home/programs/tui/shell
../../home/programs/tui/git
../../home/programs/tui/git/lazygit.nix
../../home/programs/tui/git/signing.nix # CHANGEME: Change the key or remove this file
../../home/programs/tui/nixy
../../home/programs/tui/nix-utils
../../home/programs/tui/elio
../../home/programs/tui/wikiman
../../home/programs/tui/pkgs.nix
../../home/programs/group/dev.nix
# Mostly user-specific configuration
./variables.nix
];
home = {
@@ -23,7 +28,7 @@
homeDirectory = "/home/" + config.var.username;
# Don't touch this
stateVersion = "24.05";
stateVersion = "26.05";
};
programs.home-manager.enable = true;
+1 -1
View File
@@ -8,7 +8,7 @@
path = "/home/hadi/.ssh/config";
mode = "0600";
};
github-key = {
ssh-github-key = {
owner = "hadi";
path = "/home/hadi/.ssh/github";
mode = "0600";
+33
View File
@@ -0,0 +1,33 @@
{config, ...}: {
imports = [
# Mostly system related configuration
../../nixos/audio.nix
../../nixos/fonts.nix
../../nixos/home-manager.nix
../../nixos/nix.nix
../../nixos/systemd-boot.nix
../../nixos/tuigreet.nix
../../nixos/autologin.nix # Skip first TUIGreet login, use LUKS password to unlock the keyring
../../nixos/users.nix
../../nixos/utils.nix
../../nixos/hyprland.nix
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
# CHANGEME: You should probably remove those things:
./persistence.nix # impermanence: what to keep once "/" is wiped on boot
./usbguard.nix
./disko.nix
./secrets
# You should let those lines as is
./hardware-configuration.nix
./variables.nix
];
home-manager.users."${config.var.username}" = import ./home.nix;
users.users.${config.var.username}.hashedPassword = "$y$j9T$quUlRuvuYJ18asD8SUrh11$0mHCP7ZRIOYjNHY0oT.aFfVho1V0M65eClLzVo0RARD"; # CHANGEME: This is my password
# Don't touch this
system.stateVersion = "26.05";
}
+64
View File
@@ -0,0 +1,64 @@
{
disko.devices = {
nodev = {
"/" = {
fsType = "tmpfs";
mountOptions = [
"defaults"
"size=12G"
"mode=755"
];
};
};
disk = {
main = {
type = "disk";
device = "/dev/disk/by-id/nvme-WD_PC_SN740_SDDQNQD-256G-1201_24175M800511";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = ["fmask=0077" "dmask=0077"];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
settings = {
allowDiscards = true;
bypassWorkqueues = true;
};
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"/nix" = {
mountpoint = "/nix";
mountOptions = ["compress=zstd" "noatime"];
};
"/persist" = {
mountpoint = "/persist";
mountOptions = ["compress=zstd" "noatime"];
};
};
};
};
};
};
};
};
};
};
fileSystems."/persist".neededForBoot = true;
}
+25
View File
@@ -0,0 +1,25 @@
{
inputs,
nixpkgs,
pkgs-unstable,
...
}:
nixpkgs.lib.nixosSystem {
modules = [
{
nixpkgs.overlays = [
inputs.nur.overlays.default
];
_module.args = {inherit inputs pkgs-unstable;};
}
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
inputs.nix-index-database.nixosModules.default
inputs.helium-browser.nixosModules.default
inputs.impermanence.nixosModules.impermanence
inputs.disko.nixosModules.disko
./disko.nix
./configuration.nix
];
}
+21
View File
@@ -0,0 +1,21 @@
# Hardware detection - filesystems are managed by disko.nix
{
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+87
View File
@@ -0,0 +1,87 @@
{
config,
inputs,
lib,
...
}: {
imports = [
# Programs
## GUI
../../home/programs/gui/proton
../../home/programs/gui/helium
../../home/programs/gui/pkgs.nix
## TUI
inputs.nvf-config.homeManagerModules.default
../../home/programs/tui/ghostty
../../home/programs/tui/ilovetui
../../home/programs/tui/shell
../../home/programs/tui/git
../../home/programs/tui/git/lazygit.nix
../../home/programs/tui/nixy
../../home/programs/tui/nix-utils
../../home/programs/tui/spotatui
../../home/programs/tui/elio
../../home/programs/tui/wikiman
../../home/programs/tui/pkgs.nix
## GROUPS
../../home/programs/group/cybersecurity.nix
../../home/programs/group/dev.nix
# System (Desktop environment like stuff)
../../home/system/hyprlock
../../home/system/hyprland
../../home/system/waybar
../../home/system/swaync
../../home/system/tofi
../../home/system/mime
../../home/system/udiskie
../../home/system/termfilechooser
../../home/system/clipboard
../../home/system/hypridle
./variables.nix # Mostly user-specific configuration
];
home = {
inherit (config.var) username;
homeDirectory = "/home/" + config.var.username;
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
directories = [
".config/nixos" # this repo itself (nixy manages it here)
".local/share"
".local/state"
".cache"
"Notes"
"Projects"
"Documents"
"Downloads"
"Pictures"
"Videos"
];
files = [
".ssh/known_hosts"
".config/sops/age/keys.txt"
];
};
# Don't touch this
stateVersion = "26.05";
};
wayland.windowManager.hyprland.settings.monitor = [
"desc:Philips Consumer Electronics Company PHL 221B8L ZV02144013987,highres,0x0,1"
];
programs = {
home-manager.enable = true;
nixy = {
enable = true;
configDirectory = config.var.configDirectory;
};
};
}
+28
View File
@@ -0,0 +1,28 @@
# Impermanence: declares what should survive a wipe of "/".
{
environment.persistence."/persist" = {
hideMounts = true;
directories = [
"/etc/NetworkManager/system-connections" # Wifi connections, VPN
"/var/lib/bluetooth" # Bluetooth connections
"/var/lib/nixos" # keeps uid/gid stable across boots
"/var/lib/systemd/coredump"
"/var/lib/upower" # battery calibration state
"/var/lib/systemd/backlight" # remembers screen brightness
"/var/lib/systemd/timers" # last-run timestamps (e.g. nix gc weekly)
"/var/log"
"/var/cache/tuigreet"
"/var/db/sudo/lectured" # remembers that the sudo lecture was already shown
];
files = [
"/etc/machine-id"
"/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_ed25519_key.pub"
"/etc/ssh/ssh_host_rsa_key"
"/etc/ssh/ssh_host_rsa_key.pub"
"/var/lib/systemd/random-seed" # avoid a weak entropy pool on first boot
];
};
}
+42
View File
@@ -0,0 +1,42 @@
# Those are my secrets, encrypted with sops
# You shouldn't import this file, unless you edit it
{
pkgs,
config,
...
}: let
username = config.var.username;
home = "/home/${username}";
in {
sops = {
age.keyFile = "${home}/.config/sops/age/keys.txt";
defaultSopsFile = ./secrets.yaml;
secrets = {
ssh-config = {
owner = username;
mode = "0600";
path = "${home}/.ssh/config";
};
netrc = {
owner = username;
mode = "0600";
path = "${home}/.netrc";
};
ssh-github-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/github";
};
ssh-gitlab-key = {
owner = username;
mode = "0600";
path = "${home}/.ssh/gitlab";
};
};
};
environment.systemPackages = with pkgs; [
sops
age
];
}
+28
View File
@@ -0,0 +1,28 @@
ssh-config: ENC[AES256_GCM,data:yTlt8SYPiON8aabbpQ9fE02hvp/u4oDmLaLuADzdOGdAL12MNe1QnNCND3lQ/nT+uxwm8k7OxExBfc70osLPjiq/CjNk1NOaO1nmBOXZqugnf33dF19P8SCMT2KtZTI1tYU2Kd5GmwpnozU6Qh0uJH+0ebR2tQnLChl16ap9fc6rg3AbD+XknSJ3+TndgZPBy4mN/MzT/GFL2kBDbYCmLoMXWDKxCM6ta1NvLRD8W7EBMeh/CNfkU+cw1kPjgPudDBP047VFudnqiueEAAigk3imqPyDFE1Jz4ouvVuLQz/f1BWnyZon3+sgHESAMRtAP3Lt7zo3s4PTJ04ohB4gk6K2fGBsFdyaWJp4uR8FMOhXrwG813KI,iv:W6bcO9ElLJ7YvN6PenqWNQnNSLi2WxZsjBc/adKdjeg=,tag:zKdx+RFXiOKpsY8EOGs46g==,type:str]
netrc: ENC[AES256_GCM,data:dlfPJqzz7EZ5JHBmQr7imMDlQv9KFfzDKY6YywtPWR7re7z9jBFgMoaPRk62ocCVltofak6Zrsr3on1jPrrpMwk4DQYFSnQ5tvUTi/1LJWpf9GgjokC5nqc=,iv:se1ysRyzZmB6MjU4heFrDLHe2bv8Ml2iLC4MuIcQW9Y=,tag:oyu8wfR+9hvOuKmsk2sDXw==,type:str]
ssh-github-key: ENC[AES256_GCM,data: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,iv:ElF3tykw7GKyhdb1YJBivwxT74DEWkdU1EOuOa/ntUM=,tag:+RYqptKt4L3UynBaoBmwNA==,type:str]
ssh-gitlab-key: ENC[AES256_GCM,data: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,iv:h87uW6VOwRubj19DKxEoddRN5/2v+vmKlBxfZnGjY70=,tag:SV17QrAMwJb0QWOXRbPdnw==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBma2xHeGpudjVRMTQ2WFlZ
aGJvNnJvM0hkQjM0MThZSjQvc1ErYXZRSDJjCkphZDZycUljcUhUQStNT1RFN29z
djRrTzhTckt2K1I1TGsvRWFaeVdSK1kKLS0tIFBGdFFpV1lTNlFzMSt1TktDNk91
NUphdlJ5ODZjNDZyTUl3OStpdmYrUWcKYKZ8pvGG1QkCBZTqVtFb5GIYWYfsr/Mc
+OGeP1hRwQzJ9+DLUgrsfK/8vr+0Y5q2Nej9gbfxyrnlszussbOADw==
-----END AGE ENCRYPTED FILE-----
recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0aWQ1NzVWc0lnMXBHZFZq
SEplcWMwc1R4NmkvdWdMQUJWY2R0dnRBeVVzCjBCNjVEc3hJazJzZXFFc0EzbXNV
enFtYnNVNzUwYVQ4RVUxWVhROFJhT2sKLS0tIGpWeHNwWm5NakFzY0JzYWxicHhk
MzVVaVdyOEtoUkF1aDY2UnBGbC9rbDgKoEUqT/OlVXYR5MVlpsnTY4NHa6yg3FzQ
WaBrZfGv2/dKeulFCKKFrT3ZG8TIbLTqdRoVIrUp1O+U3vObzY9fzA==
-----END AGE ENCRYPTED FILE-----
recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
lastmodified: "2026-08-17T12:19:14Z"
mac: ENC[AES256_GCM,data:2rK9RlYE7dX/c6zg3J1AeB1TI3v2XVhoUGsou0u35enhebzINUCYVC9HN9Te+6nWO/OVQ3i5vn+DwOZDbK2bfH88wqwIqI4o1Ztw2MW8/kzNJZhqv4QA4Xdo0ULD2TO3X95E1iEnuQIJ0c26gIuVdfsrQviBDbmBTMR/JVE6yHQ=,iv:kZ+2R0+Z64zAZb7ePDdJfPlo/BMFyLpAxK+7ZiDoKFI=,tag:xbf7xOYuG+Msoicx5qjyNw==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.3
+21
View File
@@ -0,0 +1,21 @@
# USBGuard:
# The following line allow all USB devices until a proper policy is configured.
# Run `sudo usbguard generate-policy` with your devices plugged in,
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
{
services.usbguard = {
enable = true;
implicitPolicyTarget = "block";
IPCAllowedUsers = [
"root"
];
rules = ''
allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
allow id 17ef:6190 serial "" name "Lenovo Calliope USB Keyboard G2" hash "CfZ9R/aoXGm7BN/ojVEzKQwVoxCUtRWMuACrE7BL/5Y=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-10" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug"
allow id 0781:5581 name " SanDisk 3.2Gen1"
allow id 17ef:608d name "Lenovo USB Optical Mouse"
'';
};
}
+39
View File
@@ -0,0 +1,39 @@
{
config,
lib,
...
}: {
imports = [
# Choose your theme here:
../../themes/nixy.nix
];
config.var = {
hostname = "h-work";
username = "hadrien";
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
keyboardLayout = "fr";
timeZone = "Europe/Paris";
defaultLocale = "en_US.UTF-8";
extraLocale = "fr_FR.UTF-8";
git = {
username = "Hadi";
email = "hadi@example.fr";
};
autoUpgrade = false;
autoGarbageCollector = true;
impermanenceEnabled = true;
};
# DON'T TOUCH THIS
options = {
var = lib.mkOption {
type = lib.types.attrs;
default = {};
};
};
}
-41
View File
@@ -1,41 +0,0 @@
{
config,
inputs,
lib,
...
}: let
inherit (import ./mk-container.nix {inherit lib config;}) mkContainer;
in {
imports = [
(mkContainer {
name = "wallpapers";
hostIp = "10.233.4.1";
containerIp = "10.233.4.2";
nixosConfig = {pkgs-unstable, ...}: {
services.nginx = {
enable = true;
virtualHosts."wallpapers" = {
root = "${inputs.awesome-wallpapers.packages.${pkgs-unstable.stdenv.hostPlatform.system}.default}/share/awesome-wallpapers";
listen = [
{
addr = "0.0.0.0";
port = 8080;
}
];
locations."/" = {
tryFiles = "$uri $uri/ /index.html";
};
extraConfig = ''
port_in_redirect off;
absolute_redirect off;
'';
};
};
networking.firewall.allowedTCPPorts = [8080];
system.stateVersion = "24.05";
};
})
];
services.cloudflared.tunnels."${config.var.tunnelId}".ingress."wallpapers.${config.var.domain}" = "http://10.233.4.2:8080";
}
@@ -7,13 +7,22 @@
in {
imports = [
(mkContainer {
name = "stirling-pdf";
name = "bentopdf";
hostIp = "10.233.9.1";
containerIp = "10.233.9.2";
nixosConfig = {...}: {
services.stirling-pdf = {
services.bentopdf = {
enable = true;
environment."SERVER_PORT" = "8080";
domain = "bentopdf";
nginx = {
enable = true;
virtualHost.listen = [
{
addr = "0.0.0.0";
port = 8080;
}
];
};
};
networking.firewall.allowedTCPPorts = [8080];
system.stateVersion = "24.05";
+2 -2
View File
@@ -74,9 +74,9 @@
icon = "sh:mazanoke";
}
{
title = "Stirling PDF";
title = "BentoPDF";
url = "https://pdf.${domain}";
icon = "sh:stirling-pdf";
icon = "sh:bentopdf";
}
{
title = "Default-creds";
-64
View File
@@ -1,64 +0,0 @@
{
config,
inputs,
lib,
...
}: let
inherit (import ./mk-container.nix {inherit lib config;}) mkContainer;
in {
imports = [
(mkContainer {
name = "iky-prod";
hostIp = "10.233.1.1";
containerIp = "10.233.1.2";
internet = true;
bindMounts."/etc/iky/config.yaml" = {
hostPath = "/var/lib/iknowyou-prod/config.yaml";
isReadOnly = false;
};
nixosConfig = {...}: {
imports = [inputs.iknowyou.nixosModules.default];
users.users.iknowyou.uid = 999;
users.groups.iknowyou.gid = 999;
services.iknowyou = {
enable = true;
port = 8080;
openFirewall = true;
};
system.stateVersion = "24.05";
};
})
(mkContainer {
name = "iky-demo";
hostIp = "10.233.2.1";
containerIp = "10.233.2.2";
nixosConfig = {...}: {
imports = [inputs.iknowyou.nixosModules.default];
services.iknowyou = {
enable = true;
port = 8080;
openFirewall = true;
};
systemd.services.iknowyou.environment.IKY_DEMO = "true";
system.stateVersion = "24.05";
};
})
];
users.users.iknowyou = {
isSystemUser = true;
group = "iknowyou";
uid = 999;
};
users.groups.iknowyou.gid = 999;
systemd.tmpfiles.rules = [
"f /var/lib/iknowyou-prod/config.yaml 0600 iknowyou iknowyou -"
];
services.cloudflared.tunnels."${config.var.tunnelId}".ingress = {
"iknowyou-prod.${config.var.domain}" = "http://10.233.1.2:8080";
"iknowyou.${config.var.domain}" = "http://10.233.2.2:8080";
};
}
-26
View File
@@ -1,26 +0,0 @@
{
config,
lib,
...
}: let
inherit (import ./mk-container.nix {inherit lib config;}) mkContainer;
in {
imports = [
(mkContainer {
name = "mealie";
hostIp = "10.233.8.1";
containerIp = "10.233.8.2";
internet = true;
nixosConfig = {...}: {
services.mealie = {
enable = true;
port = 8080;
};
networking.firewall.allowedTCPPorts = [8080];
system.stateVersion = "24.05";
};
})
];
services.cloudflared.tunnels."${config.var.tunnelId}".ingress."mealie.${config.var.domain}" = "http://10.233.8.2:8080";
}
+1 -2
View File
@@ -39,8 +39,7 @@ in {
nginxHardening
];
networking.nameservers = lib.mkIf internet [
"1.1.1.1"
"1.0.0.1"
"${hostIp}"
];
};
};
-39
View File
@@ -1,39 +0,0 @@
{
config,
lib,
...
}: let
inherit (import ./mk-container.nix {inherit lib config;}) mkContainer;
in {
sops.secrets.umami-secret.mode = "0400";
imports = [
(mkContainer {
name = "umami";
hostIp = "10.233.10.1";
containerIp = "10.233.10.2";
bindMounts."/run/secrets/umami-secret" = {
hostPath = config.sops.secrets.umami-secret.path;
isReadOnly = true;
};
nixosConfig = {...}: {
services.umami = {
enable = true;
settings = {
PORT = 8080;
HOSTNAME = "0.0.0.0";
APP_SECRET_FILE = "/run/secrets/umami-secret";
DISABLE_TELEMETRY = true;
DISABLE_BOT_CHECK = true;
};
};
# PrivateUsers breaks systemd-creds inside nspawn containers (nested user namespaces)
systemd.services.umami.serviceConfig.PrivateUsers = lib.mkForce false;
networking.firewall.allowedTCPPorts = [8080];
system.stateVersion = "24.05";
};
})
];
services.cloudflared.tunnels."${config.var.tunnelId}".ingress."umami.${config.var.domain}" = "http://10.233.10.2:8080";
}
+1
View File
@@ -29,6 +29,7 @@ in
packages = with pkgs;
[
doctoc
python3
]
++ hooks.enabledPackages;
+2 -2
View File
@@ -73,8 +73,8 @@
polarity = "dark";
image = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/main/app/static/wallpapers/another-one.png";
sha256 = "sha256-zthfsd4QLShPPApV8RoPANaymMC5IiCrmp8QwyyhCcY=";
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/main/wallpapers/another-one.png";
sha256 = "sha256-bKke8RNz6qNxHSfLbU5xVVkG3tbFZW1sFjLB1hltcoI=";
};
};
}