diff --git a/flake.lock b/flake.lock index b922e6d..08f0447 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,28 @@ { "nodes": { + "apple-fonts": { + "inputs": { + "nixpkgs": "nixpkgs", + "ny": "ny", + "sf-arabic": "sf-arabic", + "sf-compact": "sf-compact", + "sf-mono": "sf-mono", + "sf-pro": "sf-pro" + }, + "locked": { + "lastModified": 1732029343, + "narHash": "sha256-sAOEhA/vfyAKggwyI3PNy2xeNzb/USZl4YNpeSzMRBI=", + "owner": "lyndeno", + "repo": "apple-fonts.nix", + "rev": "714767021b57d0d30de35eb90e4b748fbbb9c99f", + "type": "github" + }, + "original": { + "owner": "lyndeno", + "repo": "apple-fonts.nix", + "type": "github" + } + }, "base16-schemes": { "flake": false, "locked": { @@ -23,16 +46,16 @@ ] }, "locked": { - "lastModified": 1726989464, - "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "lastModified": 1732466619, + "narHash": "sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "rev": "f3111f62a23451114433888902a55cf0692b408d", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.05", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } @@ -58,17 +81,18 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728067476, - "narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=", - "owner": "NixOS", + "lastModified": 1731319897, + "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030", + "rev": "dc460ec76cbff0e66e269457d7b728432263166c", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-24.05", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-lib": { @@ -88,11 +112,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1728018373, - "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", + "lastModified": 1732521221, + "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", + "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", "type": "github" }, "original": { @@ -101,13 +125,89 @@ "type": "indirect" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1732350895, + "narHash": "sha256-GcOQbOgmwlsRhpLGSwZJwLbo3pu9ochMETuRSS1xpz4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0c582677378f2d9ffcb01490af2f2c678dcb29d3", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.11", + "type": "indirect" + } + }, + "ny": { + "flake": false, + "locked": { + "narHash": "sha256-3257NAH4qlan2YHVLpNRy7x8IJqR2pal3OzFo/ykqXs=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" + } + }, "root": { "inputs": { + "apple-fonts": "apple-fonts", "home-manager": "home-manager", "nix-colors": "nix-colors", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "sf-arabic": { + "flake": false, + "locked": { + "narHash": "sha256-/0gjRimqvZyE60xYxxPdlU+7Q2LJnnvtbmwOP0YmS9U=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" + } + }, + "sf-compact": { + "flake": false, + "locked": { + "narHash": "sha256-J72Lyt2wy83E46wN8w6/Rih9kilM9wEjtY6KnbF0DsA=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" + } + }, + "sf-mono": { + "flake": false, + "locked": { + "narHash": "sha256-ICdHRFdNL7PM/fXJUzS7LgZxZiqcyIuCMHLze4En4vg=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" + } + }, + "sf-pro": { + "flake": false, + "locked": { + "narHash": "sha256-Q/pOQ4MGhW/ZtLka+UUQcwSoZFDWW34XvutxL4GvzUY=", + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" + }, + "original": { + "type": "file", + "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 5858fda..196a545 100644 --- a/flake.nix +++ b/flake.nix @@ -2,19 +2,20 @@ description = "Nixos configuration for Xeovalyte"; inputs = { - nixpkgs.url = "nixpkgs/nixos-24.05"; + nixpkgs.url = "nixpkgs/nixos-24.11"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager/release-24.05"; + url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-colors.url = "github:misterio77/nix-colors"; + apple-fonts.url = "github:lyndeno/apple-fonts.nix"; }; - outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, nix-colors, ... }: + outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, nix-colors, apple-fonts, ... }: let system = "x86_64-linux"; overlay-unstable = final: prev: { diff --git a/homelab/README.md b/homelab/README.md index f968a16..cc5eca3 100644 --- a/homelab/README.md +++ b/homelab/README.md @@ -1,13 +1,44 @@ -# Create proxy network -`docker network create proxy` +# Configuration steps -# Configure caddy cloudflare -Find instructions on [caddy-dns cloudflare](https://github.com/caddy-dns/cloudflare) +## 1. Install [NixOS](https://nixos.org/) + +Follow the steps from the [NixOS Manual Installation](https://nixos.org/manual/nixos/stable/#sec-installation-manual) + +> At the edit configuration.nix step you must: +> +> - Add a user to the configuration file and set a password +> - Enable openssh + +## 2. Configuring flake + +1. Clone this repository +2. Copy hardware configuration to host
+ `cp /etc/nixos/hardware-configuration.nix ~/nix/hosts//hardware-configuration.nix` +3. Rebuild system + `sudo nixos-rebuild switch --flake .#` +4. Rebuild home-manager + `home-manager switch --flake .#@` +5. Reboot + +## 3. Configuring docker containers + +1. Create proxy network
+ `docker network create proxy` + +2. Configure [Adguard](./adguard/README.md) +3. Configure [Caddy](./caddy/README.md) +4. Configure [Authelia](./authelia/README.md) +5. Configure the rest of the services # Services -| Name | Use | Domain | Auth | -| --- | --- | --- | --- | -| Adguard | DNS | https://adguard.timo.bmrs.nl/ | local | -| Caddy | Reverse proxy | - | - | -| Forgejo | Git | https://git.timo.bmrs.nl/ | Openid | -| Ldap | User directory | https://ldap.timo.bmrs.nl/ | - | + +| Name | Use | Domain | Auth | +| ------- | -------------- | ----------------------------- | ------ | +| Adguard | DNS | https://adguard.timo.bmrs.nl/ | local | +| Caddy | Reverse proxy | - | - | +| Forgejo | Git | https://git.timo.bmrs.nl/ | Openid | +| Ldap | User directory | https://ldap.timo.bmrs.nl/ | - | + +# Services to try out + +- [Beszel](https://github.com/henrygd/beszel) diff --git a/homelab/adguard/README.md b/homelab/adguard/README.md new file mode 100644 index 0000000..24a0cbc --- /dev/null +++ b/homelab/adguard/README.md @@ -0,0 +1,7 @@ +# Adguard Home + +1. Temporaraly edit ports in docker-compose file to setup +2. Configuration screen
+ 1. Change listen interface to port 3000 +3. Add DNS rewrite for *.timo.bmrs.nl +4. Delete temporaraly port edit in docker-compose diff --git a/homelab/authelia/README.md b/homelab/authelia/README.md index 7bcd542..89b03a9 100644 --- a/homelab/authelia/README.md +++ b/homelab/authelia/README.md @@ -1,2 +1,13 @@ -- Follow [This](https://www.authelia.com/configuration/identity-providers/openid-connect/provider/) guide for generating keys -- Store the keys in the /keys directory +# Authelia + +1. Edit environment variables. + 1. For HMAC_SECRET, JWT_SECRET, ADMIN_PASSWORD, SESSION_SECRET, STORAGE_ENCRYPTION_KEY, LLDAP_KEY_SEED use an random alphanumeric string of at least 64 characters + 2. For CLIENT_SECRET, CLIEND_ID: [Generate client identifier](https://www.authelia.com/integration/openid-connect/frequently-asked-questions/#how-do-i-generate-a-client-identifier-or-client-secret) + 1. Use single quotes for the client secret + +2. Generate PAM file using and save it to the /config/keys directory: [Generating keypair](https://www.authelia.com/reference/guides/generating-secure-values/#generating-an-rsa-keypair) + 1. Save the random password + +3. Configure LLDAP + 1. Create a user in LLDAP with the group: lldap_password_manager + 2. Create groups: forgejo diff --git a/homelab/caddy/README.md b/homelab/caddy/README.md index b5bf719..b69ae0f 100644 --- a/homelab/caddy/README.md +++ b/homelab/caddy/README.md @@ -1,2 +1,4 @@ # Caddy reverse proxy -Follow [this](https://github.com/caddy-dns/cloudflare) to obtain secrets + +1. Obtain cloudflare tokens: [Caddy Cloudflare](https://github.com/caddy-dns/cloudflare) +2. Set environment variables diff --git a/homelab/nextcloud/README.md b/homelab/nextcloud/README.md new file mode 100644 index 0000000..5895975 --- /dev/null +++ b/homelab/nextcloud/README.md @@ -0,0 +1,4 @@ +# Nextcloud + +1. Configure environment variables +2. Update office configuration diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index 4e84fb3..4a89c17 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -51,6 +51,8 @@ extraGroups = [ "networkmanager" "wheel" "dialout" ]; }; + nix.settings.trusted-users = [ "root" "xeovalyte" ]; + boot.kernelPackages = pkgs.linuxPackages_latest; # Configure wacom tablet diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index cec66cd..4fcb058 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, lib, ... }: { imports = [ @@ -45,19 +45,23 @@ home.packages = with pkgs; [ # Desktop Applications kdenlive - unstable.prismlauncher + prismlauncher + unstable.modrinth-app unstable.joplin-desktop unstable.prusa-slicer + unstable.font-manager signal-desktop unstable.vesktop - unstable.blender + unstable.webcord + blender + unstable.freecad-wayland loupe unstable.rnote + unstable.bottles + # Office libreoffice - onlyoffice-bin - papers # Image editing gimp diff --git a/modules/home/cli/common/helix.nix b/modules/home/cli/common/helix.nix index 759a87e..09dfc54 100644 --- a/modules/home/cli/common/helix.nix +++ b/modules/home/cli/common/helix.nix @@ -3,21 +3,25 @@ { home.packages = with pkgs; [ unstable.marksman + unstable.markdown-oxide unstable.svls unstable.nil unstable.nixpkgs-fmt - unstable.vale-ls - unstable.vale + unstable.tectonic + unstable.texlab + dprint ]; - home.file.".config/vale/.vale.ini".text = '' - StylesPath = ~/.local/share/vale/styles - - MinAlertLevel = suggestion - Packages = Readability - - [*] - BasedOnStyles = Vale + home.file.".config/.dprint.json".text ='' + { + "markdown": { + "lineWidth":120, + }, + "excludes": [], + "plugins": [ + "https://plugins.dprint.dev/markdown-0.16.1.wasm" + ] + } ''; programs.helix = { @@ -43,9 +47,38 @@ command = "svls"; }; - # Vale - language-server.vale = { - command = "vale-ls"; + language-server.texlab = { + config = { + texlab.chktex = { + onOpenAndSave = true; + onEdit = true; + }; + texlab.forwardSearch = { + executable = "zathura"; + args = [ + "--synctex-forward" + "%l:%c:%f" + "%p" + ]; + }; + texlab.build = { + auxDirectory = "build"; + logDirectory = "build"; + pdfDirectory = "build"; + forwardSearchAfter = true; + onSave = true; + executable = "tectonic"; + args = [ + "-X" + "compile" + "--synctex" + "--keep-logs" + "--keep-intermediates" + "--outdir=build" + "%f" + ]; + }; + }; }; language = [ @@ -53,10 +86,6 @@ name = "verilog"; language-servers = [ "svls" ]; } - { - name = "nix"; - language-servers = [ "svls" ]; - } { name = "html"; language-servers = [ "vscode-html-language-server" "tailwindcss-ls" ]; @@ -67,7 +96,15 @@ } { name = "markdown"; - language-servers = [ "vale" ]; + auto-format = true; + language-servers = [ "markdown-oxide" ]; + formatter.command = "dprint"; + formatter.args = ["fmt" "--stdin" "md" "--config" "/home/xeovalyte/.config/.dprint.json"]; + } + { + name = "typst"; + auto-format = false; + formatter.command = "${pkgs.typstfmt}/bin/typstfmt"; } ]; }; diff --git a/modules/home/cli/develop.nix b/modules/home/cli/develop.nix index 8b4b845..2a05eb4 100644 --- a/modules/home/cli/develop.nix +++ b/modules/home/cli/develop.nix @@ -23,6 +23,11 @@ keybinds { normal { bind "Ctrl e" { ToggleFloatingPanes; SwitchToMode "normal"; } + bind "Ctrl 1" { GoToTab 1; } + bind "Ctrl 2" { GoToTab 2; } + bind "Ctrl 3" { GoToTab 3; } + bind "Ctrl 4" { GoToTab 4; } + bind "Ctrl 5" { GoToTab 5; } } } ''; @@ -44,4 +49,39 @@ } ''; }; + + home.file.zellij-layout-dioxus = { + target = ".config/zellij/layouts/dioxus.kdl"; + text = '' + layout { + tab { + pane { + command "hx" + args "." + focus true + } + floating_panes { + pane { + width "80%" + height "80%" + x "10%" + y "10%" + } + } + } + tab { + pane { + command "dx" + args "serve" + } + } + tab { + pane { + command "devenv" + args "up" + } + } + } + ''; + }; } diff --git a/modules/home/gui/common/firefox.nix b/modules/home/gui/common/firefox.nix index 9019361..5bf5cb5 100644 --- a/modules/home/gui/common/firefox.nix +++ b/modules/home/gui/common/firefox.nix @@ -60,16 +60,20 @@ name = "Brightspace"; bookmarks = [ { - name = "LCA"; - url = "https://brightspace.tudelft.nl/d2l/le/content/681008/Home"; + name = "Books"; + url = "https://drive.google.com/drive/folders/1L5OTbn5p3i7_Nc80hc5PztiEGHKwi-I4"; } { - name = "DSA"; - url = "https://brightspace.tudelft.nl/d2l/le/content/681012/Home"; + name = "LCB"; + url = "https://brightspace.tudelft.nl/d2l/le/content/681010/Home"; } { - name = "iEE"; - url = "https://brightspace.tudelft.nl/d2l/le/content/681018/Home"; + name = "Calculus"; + url = "https://brightspace.tudelft.nl/d2l/le/content/681024/Home"; + } + { + name = "IP1"; + url = "https://brightspace.tudelft.nl/d2l/le/content/681020/Home"; } ]; } diff --git a/modules/home/gui/common/fonts.nix b/modules/home/gui/common/fonts.nix index 7fffede..8171473 100644 --- a/modules/home/gui/common/fonts.nix +++ b/modules/home/gui/common/fonts.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, inputs, ... }: { fonts.fontconfig.enable = true; @@ -8,6 +8,8 @@ fira-code font-awesome dejavu_fonts + roboto (nerdfonts.override { fonts = [ "DejaVuSansMono" ]; }) + inputs.apple-fonts.packages.${pkgs.system}.sf-pro ]; } diff --git a/modules/home/gui/hyprland/default.nix b/modules/home/gui/hyprland/default.nix index 17cbfbe..3bc6c8a 100644 --- a/modules/home/gui/hyprland/default.nix +++ b/modules/home/gui/hyprland/default.nix @@ -51,6 +51,7 @@ follow_mouse = 2; touchpad = { natural_scroll = true; + scroll_factor = 0.5; clickfinger_behavior = true; }; }; @@ -68,10 +69,7 @@ decoration = { rounding = "5"; - drop_shadow = "false"; blur.enabled = "false"; - shadow_render_power = "3"; - "col.shadow" = "rgba(1a1a1aee)"; }; gestures = { diff --git a/modules/system/hardware/amd.nix b/modules/system/hardware/amd.nix index 1284f06..aa285ef 100644 --- a/modules/system/hardware/amd.nix +++ b/modules/system/hardware/amd.nix @@ -3,14 +3,13 @@ { boot.initrd.kernelModules = [ "amdgpu" ]; - hardware.opengl.enable = true; - hardware.opengl.driSupport32Bit = true; - hardware.opengl.extraPackages = with pkgs; [ + hardware.graphics.enable = true; + hardware.graphics.extraPackages = with pkgs; [ amdvlk mesa.drivers ]; - hardware.opengl.extraPackages32 = with pkgs; [ + hardware.graphics.extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ];