Compare commits

...

17 Commits

Author SHA1 Message Date
c4c7e95e7d 🔧 [pi4] Temporary disable Actual budget 2025-08-12 16:40:05 +00:00
cb6e38604d [pi4] ADd roomba dependency to home assistant️ 2025-08-12 16:40:04 +00:00
859a0e22c2 🔒 [pi4] Do not require password for sudo️ 2025-08-12 16:40:04 +00:00
db3e754114 🪛 [shared] Add clean recipies 2025-08-11 21:10:50 +02:00
51413f3896 [shared] Replace Prettier with Biome 2025-08-11 20:48:52 +02:00
9557d9a6e6 🔧 [laptop] Update HyprPanel config 2025-08-10 16:59:29 +02:00
c4160fef76 [pi4] Initial Home-Assistant setup️ 2025-08-10 13:14:56 +00:00
49c60b3519 🔧 [shared/desktop] Update Zed config 2025-08-09 13:07:37 +02:00
383fb19b59 📦 [shared] Updated dependencies, replace Grayjay flake with package 2025-08-09 12:59:51 +02:00
28ab51d4bf 🗑️ [shared/desktop] Remove deprecated Catppuccing GTK 2025-08-09 12:40:19 +02:00
56cb89cb65 📦 [desktop] Use latest Linux LTS 2025-08-09 12:39:18 +02:00
efaaa3d724 [pi4] Disable mailserver️ 2025-08-09 08:36:37 +00:00
adb156a8b8 📦 [shared] Update dependencies 2025-07-28 22:12:41 +02:00
51c9dac1ef 🪛 [shared] Added httpie import 2025-07-28 18:24:21 +02:00
cbcb8f1764 [shared] Replace Hyprpanel flake with HM module 2025-07-28 18:24:21 +02:00
055c399d31 [pi4] Add reverse proxy for martials.no staging environment 2025-07-10 18:47:08 +00:00
4985fd4a89 🐛 [pi4] Fix Actual container not working 2025-07-10 18:47:08 +00:00
25 changed files with 206 additions and 265 deletions

View File

@ -1 +0,0 @@
trailingComma = "none"

12
biome.jsonc Normal file
View File

@ -0,0 +1,12 @@
{
"$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
"formatter": {
"enabled": true,
"indentStyle": "space"
},
"linter": {
"enabled": false
}
}

213
flake.lock generated
View File

@ -1,70 +1,5 @@
{ {
"nodes": { "nodes": {
"ags": {
"inputs": {
"astal": "astal",
"nixpkgs": [
"hyprpanel",
"nixpkgs"
]
},
"locked": {
"lastModified": 1744557573,
"narHash": "sha256-XAyj0iDuI51BytJ1PwN53uLpzTDdznPDQFG4RwihlTQ=",
"owner": "aylur",
"repo": "ags",
"rev": "3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "ags",
"type": "github"
}
},
"astal": {
"inputs": {
"nixpkgs": [
"hyprpanel",
"ags",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742571008,
"narHash": "sha256-5WgfJAeBpxiKbTR/gJvxrGYfqQRge5aUDcGKmU1YZ1Q=",
"owner": "aylur",
"repo": "astal",
"rev": "dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "astal",
"type": "github"
}
},
"astal_2": {
"inputs": {
"nixpkgs": [
"hyprpanel",
"nixpkgs"
]
},
"locked": {
"lastModified": 1748416910,
"narHash": "sha256-FEQcs58HL8Fe4i7XlqVEUwthjxwvRvgX15gTTfW17sU=",
"owner": "aylur",
"repo": "astal",
"rev": "c1bd89a47c81c66ab5fc6872db5a916c0433fb89",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "astal",
"type": "github"
}
},
"blobs": { "blobs": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -86,11 +21,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1748080874, "lastModified": 1754727511,
"narHash": "sha256-sUebEzAkrY8Aq5G0GHFyRddmRNGP/a2iTtV7ISNvi/c=", "narHash": "sha256-iRqRCeeXEQ5HSB6zI6Wja7ZfY0PPRx5yelgjtoX2iMo=",
"owner": "catppuccin", "owner": "catppuccin",
"repo": "nix", "repo": "nix",
"rev": "0ba11b12be81f0849a89ed17ab635164ea8f0112", "rev": "7b55c4947c02f79dfd249432ccb0ada2726c29e2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -163,24 +98,6 @@
"type": "github" "type": "github"
} }
}, },
"grayjay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1748772835,
"narHash": "sha256-p/hGSN1DOU/pELQi5PTds8eL+czjmb/0RvwvLm7nGC8=",
"owner": "rishabh5321",
"repo": "grayjay-flake",
"rev": "998cbc285d936a45daf07414d03db3f60c133caa",
"type": "github"
},
"original": {
"owner": "rishabh5321",
"repo": "grayjay-flake",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -188,11 +105,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748665073, "lastModified": 1753592768,
"narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "282e1e029cb6ab4811114fc85110613d72771dea", "rev": "fc3add429f21450359369af74c2375cb34a2d204",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -210,11 +127,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1743604125, "lastModified": 1752603129,
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=", "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a", "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -223,33 +140,13 @@
"type": "github" "type": "github"
} }
}, },
"hyprpanel": {
"inputs": {
"ags": "ags",
"astal": "astal_2",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1748962037,
"narHash": "sha256-MkrOyZ6CqTzzmlfmvkPiezy51hG96xqucrR38xQpK/0=",
"owner": "Jas-SinghFSU",
"repo": "HyprPanel",
"rev": "8422c6b80526f8289a30b93cb5b354d9f007141d",
"type": "github"
},
"original": {
"owner": "Jas-SinghFSU",
"repo": "HyprPanel",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1744463964, "lastModified": 1753694789,
"narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -277,11 +174,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1748889542, "lastModified": 1754689972,
"narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=", "narHash": "sha256-eogqv6FqZXHgqrbZzHnq43GalnRbLTkbBbFtEfm1RSc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922", "rev": "fc756aa6f5d3e2e5666efcf865d190701fef150a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -293,11 +190,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1748693115, "lastModified": 1754498491,
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -309,43 +206,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1748693115, "lastModified": 1754689972,
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "narHash": "sha256-eogqv6FqZXHgqrbZzHnq43GalnRbLTkbBbFtEfm1RSc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "rev": "fc756aa6f5d3e2e5666efcf865d190701fef150a",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1748370509,
"narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4faa5f5321320e49a78ae7848582f684d64783e9",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1748889542,
"narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -355,7 +220,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1747179050, "lastModified": 1747179050,
"narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=",
@ -371,13 +236,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1743448293, "lastModified": 1752480373,
"narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -390,10 +255,8 @@
"root": { "root": {
"inputs": { "inputs": {
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"grayjay": "grayjay",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprpanel": "hyprpanel", "nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_4",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"simple-nixos-mailserver": "simple-nixos-mailserver", "simple-nixos-mailserver": "simple-nixos-mailserver",
@ -407,7 +270,7 @@
"blobs": "blobs", "blobs": "blobs",
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"git-hooks": "git-hooks", "git-hooks": "git-hooks",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_3",
"nixpkgs-25_05": "nixpkgs-25_05" "nixpkgs-25_05": "nixpkgs-25_05"
}, },
"locked": { "locked": {
@ -432,11 +295,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747603214, "lastModified": 1754328224,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "narHash": "sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "rev": "49021900e69812ba7ddb9e40f9170218a7eca9f4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -453,11 +316,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1748752728, "lastModified": 1754196919,
"narHash": "sha256-en008ncPUQjVx2i3PbM4RWeZkD9DNbJwIy0epppXe2o=", "narHash": "sha256-0zATw65mNql9H8e7HWVBPpijMSbDVeK7JNivRBcUScM=",
"owner": "Gerg-L", "owner": "Gerg-L",
"repo": "spicetify-nix", "repo": "spicetify-nix",
"rev": "0e03de40d5128eb2ad600c98f57cf5db2cdf3240", "rev": "24fcb94f7792ab755b933e1c9516996530ac1fbd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -484,14 +347,14 @@
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_6" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1748920570, "lastModified": 1754713785,
"narHash": "sha256-m7EshkqPxa3IxN/qwxP1LlMlRdn37aiK0hghDieho8A=", "narHash": "sha256-/XEjh0nXEzHX5H84AAEP1vJopIGf0Z4sbfqKklwQaHk=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "ff5bf0bcf588e8c1d0f5fcd635b0c8e1cce8aee5", "rev": "7564df093b5d6aac0be47a0cd6336e5a36ece598",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -29,8 +29,6 @@
}; };
# Catppuccin theming # Catppuccin theming
catppuccin.url = "github:catppuccin/nix"; catppuccin.url = "github:catppuccin/nix";
# Bar
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05"; simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
# Spotify # Spotify
spicetify-nix = { spicetify-nix = {
@ -39,8 +37,6 @@
}; };
# Browser # Browser
zen-browser.url = "github:0xc000022070/zen-browser-flake"; zen-browser.url = "github:0xc000022070/zen-browser-flake";
# Video aggregator
grayjay.url = "github:rishabh5321/grayjay-flake";
}; };
outputs = outputs =
@ -48,7 +44,6 @@
self, self,
nixpkgs, nixpkgs,
home-manager, home-manager,
simple-nixos-mailserver,
... ...
}@inputs: }@inputs:
let let
@ -179,9 +174,7 @@
}; };
} }
{ {
nixpkgs.overlays = with inputs; [ nixpkgs.overlays = [ ];
hyprpanel.overlay
];
} }
]; ];
}; };

View File

@ -11,5 +11,5 @@
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
boot.kernelPackages = pkgs.linuxPackages_6_14; boot.kernelPackages = pkgs.linuxPackages_6_12;
} }

View File

@ -29,10 +29,9 @@
} }
.search-wrapper .logo-and-wordmark .logo { .search-wrapper .logo-and-wordmark .logo {
background: background: url("zen-logo-mocha.svg"),
url("zen-logo-mocha.svg"),
url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg")
no-repeat center !important; no-repeat center !important;
display: inline-block !important; display: inline-block !important;
height: 82px !important; height: 82px !important;
width: 82px !important; width: 82px !important;

View File

@ -1,10 +1,11 @@
{ config, common, ... }: { config, common, ... }:
let let
domain = "beta.budget.${common.domain}"; domain = "beta.budget.${common.domain}";
port = 8084;
in in
{ {
networking.nat = { networking.nat = {
enable = true; enable = false;
internalInterfaces = [ "ve-*" ]; internalInterfaces = [ "ve-*" ];
externalInterface = "wlan0"; externalInterface = "wlan0";
# Lazy IPv6 connectivity for the container # Lazy IPv6 connectivity for the container
@ -12,18 +13,19 @@ in
}; };
containers.actual = { containers.actual = {
autoStart = true; autoStart = false;
privateNetwork = true; privateNetwork = true;
hostAddress = "192.168.10.188"; hostAddress = "192.168.10.188";
localAddress = "192.168.10.11"; localAddress = "192.168.10.11";
config = config =
{ ... }: { ... }:
{ {
networking.firewall.allowedTCPPorts = [ port ];
services = { services = {
actual = { actual = {
enable = true; enable = false;
settings = { settings = {
port = 8084; inherit port;
loginMethod = "password"; loginMethod = "password";
}; };
}; };
@ -35,7 +37,7 @@ in
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://${config.containers.actual.localAddress}:8084"; proxyPass = "http://${config.containers.actual.localAddress}:${toString port}";
proxyWebsockets = true; proxyWebsockets = true;
}; };
}; };

View File

@ -9,6 +9,7 @@
./forgejo.nix ./forgejo.nix
./hardware.nix ./hardware.nix
./headscale.nix ./headscale.nix
./home-assitant.nix
./mailserver.nix ./mailserver.nix
./nextcloud.nix ./nextcloud.nix
./nginx.nix ./nginx.nix

View File

@ -0,0 +1,73 @@
{ pkgs, common, ... }:
let
dbName = "hass";
domain = "beta.home.${common.domain}";
port = 8085;
in
{
services = {
home-assistant = {
enable = true;
package =
(pkgs.home-assistant.override {
extraPackages =
py: with py; [
# Postgres
psycopg2
# Roomba
roombapy
];
}).overrideAttrs
(oldAttrs: {
# Avoid long install checks
doInstallCheck = false;
});
extraComponents = [
# Components required to complete the onboarding
"esphome"
"met"
"radio_browser"
];
config = {
# Includes dependencies for a basic setup
# https://www.home-assistant.io/integrations/default_config/
default_config = { };
homeassistant = {
name = "Hjem";
unit_system = "metric";
temperature_unit = "C";
};
http = {
server_host = "::1";
trusted_proxies = [ "::1" ];
use_x_forwarded_for = true;
server_port = port;
};
recorder.db_url = "postgresql://@/${dbName}";
};
};
nginx.virtualHosts.${domain} = {
forceSSL = true;
enableACME = true;
extraConfig = ''
proxy_buffering off;
'';
locations."/" = {
proxyPass = "http://[::1]:${toString port}";
proxyWebsockets = true;
};
};
postgresql = {
enable = true;
ensureDatabases = [ dbName ];
ensureUsers = [
{
name = dbName;
ensureDBOwnership = true;
}
];
};
};
}

View File

@ -14,7 +14,7 @@ in
]; ];
mailserver = { mailserver = {
enable = true; enable = false;
# stateVersion = 1; TODO uncomment on 25.11 # stateVersion = 1; TODO uncomment on 25.11
fqdn = "mail.${common.domain}"; fqdn = "mail.${common.domain}";
domains = [ domains = [

View File

@ -33,6 +33,7 @@ in
# Beta is currently stable # Beta is currently stable
"www.${domain}" = redirect ""; "www.${domain}" = redirect "";
"beta.${domain}" = redirect ""; "beta.${domain}" = redirect "";
"dev.${domain}" = homelabProxy 4322;
"git.${domain}" = redirect "code"; "git.${domain}" = redirect "code";
"kitchenowl.${domain}" = redirect "grocery"; "kitchenowl.${domain}" = redirect "grocery";
# Gitea # Gitea

View File

@ -1,7 +1,22 @@
{ systemConfig, ... }:
{ {
imports = [ imports = [
./firewall.nix ./firewall.nix
]; ];
security.sudo.extraRules = [
{
users = [ systemConfig.username ];
runAs = "ALL:ALL";
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
services.pcscd.enable = true; services.pcscd.enable = true;
} }

View File

@ -4,7 +4,7 @@
}: }:
{ {
programs.hyprpanel.settings.layout."bar.layouts"."*".right = lib.mkForce [ programs.hyprpanel.settings.bar.layouts."*".right = lib.mkForce [
"kbinput" "kbinput"
"volume" "volume"
"network" "network"

View File

@ -29,10 +29,9 @@
} }
.search-wrapper .logo-and-wordmark .logo { .search-wrapper .logo-and-wordmark .logo {
background: background: url("zen-logo-mocha.svg"),
url("zen-logo-mocha.svg"),
url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg")
no-repeat center !important; no-repeat center !important;
display: inline-block !important; display: inline-block !important;
height: 82px !important; height: 82px !important;
width: 82px !important; width: 82px !important;

View File

@ -6,6 +6,14 @@ default:
fmt: fmt:
treefmt --on-unmatched info treefmt --on-unmatched info
# Clean user files
clean-user:
nh clean user
# Clean all files
clean-all:
nh clean all
# Build a specific host but don't activate it. Host must use same system as target system # Build a specific host but don't activate it. Host must use same system as target system
build HOST: build HOST:
git add . git add .

View File

@ -16,12 +16,20 @@
helix = helix =
let let
prettier = format: { prettier = format: {
command = "prettier"; command = lib.getExe pkgs.nodePackages.prettier;
args = [ args = [
"--stdin-filepath" "--stdin-filepath"
"file.${format}" "file.${format}"
]; ];
}; };
biome = format: {
command = lib.getExe pkgs.biome;
args = [
"check"
"--stdin-file-path=file.${format}"
"--write"
];
};
in in
{ {
enable = true; enable = true;
@ -60,7 +68,7 @@
languages.language = [ languages.language = [
{ {
name = "css"; name = "css";
formatter = prettier "css"; formatter = biome "css";
auto-format = true; auto-format = true;
} }
{ {
@ -68,14 +76,14 @@
language-servers = [ language-servers = [
"vscode-json-language-server" "vscode-json-language-server"
]; ];
formatter = prettier "json"; formatter = biome "json";
auto-format = true; auto-format = true;
} }
{ {
name = "jsonc"; name = "jsonc";
language-servers = [ language-servers = [
]; ];
formatter = prettier "jsonc"; formatter = biome "jsonc";
file-types = [ file-types = [
"jsonc" "jsonc"
]; ];

View File

@ -2,7 +2,7 @@
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
nodePackages.prettier biome # Linter + formatter
nixfmt-rfc-style nixfmt-rfc-style
treefmt treefmt
shfmt shfmt

View File

@ -12,6 +12,7 @@
"nix" "nix"
"git-firefly" "git-firefly"
"just" "just"
"biome"
]; ];
userSettings = userSettings =
let let
@ -24,14 +25,13 @@
provider = "ollama"; provider = "ollama";
model = "deepseek-r1:8b"; model = "deepseek-r1:8b";
}; };
version = "2";
}; };
autosave = "on_focus_change"; autosave = "on_focus_change";
auto_update = false; auto_update = false;
base_keymap = "JetBrains"; base_keymap = "JetBrains";
buffer_font_family = font; buffer_font_family = font;
features = { features = {
edit_completion_provider = "zed"; edit_prediction_provider = "zed";
}; };
icon_theme = { icon_theme = {
mode = theme.mode; mode = theme.mode;

View File

@ -1,13 +1,6 @@
{ theme, ... }: { ... }:
{ {
# TODO deprecated, remove
catppuccin.gtk = {
enable = true;
flavor = theme.flavor;
icon.enable = true;
};
dconf = { dconf = {
enable = true; enable = true;
settings = { settings = {

View File

@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
inputs,
common, common,
theme, theme,
lib, lib,
@ -8,28 +7,10 @@
}: }:
{ {
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ]; wayland.windowManager.hyprland.settings.exec-once = [ "hyprpanel" ];
programs.hyprpanel = { programs.hyprpanel = {
enable = true; enable = true;
# Add hyprpanel to the Hyprland config 'exec-once'.
hyprland.enable = true;
# Fix the overwrite issue with HyprPanel.
overwrite.enable = true;
# Override the final config with an arbitrary set.
# Useful for overriding colors in your selected theme.
# TODO fixes theming bugs in recent versions, should be removed when fixed
override = {
theme = {
bar.transparent = true;
font = {
name = "${theme.nerdFont} NF";
size = "15px";
};
};
};
# Configure and theme almost all options from the GUI. # Configure and theme almost all options from the GUI.
# Options that require '{}' or '[]' are not yet implemented, # Options that require '{}' or '[]' are not yet implemented,
# except for the layout above. # except for the layout above.
@ -56,24 +37,22 @@
}; };
# Configure bar layouts for monitors. # Configure bar layouts for monitors.
layout = { bar.layouts = {
"bar.layouts" = { "*" = {
"*" = { left = [
left = [ "dashboard"
"dashboard" "workspaces"
"workspaces" "windowtitle"
"windowtitle" ];
]; middle = [ "media" ];
middle = [ "media" ]; right = [
right = [ "kbinput"
"kbinput" "volume"
"volume" "network"
"network" "systray"
"systray" "clock"
"clock" "notifications"
"notifications" ];
];
};
}; };
}; };
@ -117,7 +96,7 @@
bar.transparent = true; bar.transparent = true;
font = { font = {
name = "${theme.nerdFont} NF"; name = "${theme.nerdFont} NF";
size = "16px"; size = "15px";
}; };
}; };

View File

@ -4,6 +4,7 @@
imports = [ imports = [
./docker.nix ./docker.nix
./dotnet.nix ./dotnet.nix
./httpie.nix
./node.nix ./node.nix
./ollama.nix ./ollama.nix
./rust.nix ./rust.nix

View File

@ -5,6 +5,5 @@
jetbrains.webstorm jetbrains.webstorm
nodejs_22 nodejs_22
pnpm pnpm
nodePackages.prettier
]; ];
} }

View File

@ -1,4 +1,4 @@
{ pkgs, inputs, ... }: { pkgs, ... }:
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -6,6 +6,6 @@
gimp gimp
vlc vlc
vdhcoapp vdhcoapp
inputs.grayjay.packages.${system}.grayjay grayjay
]; ];
} }

View File

@ -13,7 +13,7 @@
# Formatters needed for 'just fmt' # Formatters needed for 'just fmt'
format = pkgs.mkShell { format = pkgs.mkShell {
packages = with pkgs; [ packages = with pkgs; [
nodePackages.prettier biome
nixfmt-rfc-style nixfmt-rfc-style
treefmt treefmt
shfmt shfmt

View File

@ -2,17 +2,13 @@
command = "nixfmt" command = "nixfmt"
includes = ["*.nix"] includes = ["*.nix"]
[formatter.prettier] [formatter.biome]
command = "prettier" command = "biome"
includes = ["*.css", "*.json", "*.jsonc", "*.yaml"] includes = ["*.css", "*.json", "*.jsonc"]
options = ["--write"] options = ["check", "--write"]
[formatter.shell] [formatter.shell]
command = "shfmt" command = "shfmt"
includes = ["fmt", "test", "switch"] includes = ["fmt", "test", "switch"]
excludes = [] excludes = []
options = [ options = ["--indent", "2", "--simplify", "--write"]
"--indent", "2",
"--simplify",
"--write",
]