diff --git a/.sops.yaml b/.sops.yaml index 6f83c66..b84ea99 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -8,7 +8,7 @@ keys: # ssh host "nix shell nixpkgs#ssh-to-age -c $SHELL -c 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'" - &sshd-at-beefcake age1etv56f7kf78a55lxqtydrdd32dpmsjnxndf4u28qezxn6p7xt9esqvqdq7 - &sshd-at-router age1zd7c3g5d20shdftq8ghqm0r92488dg4pdp4gulur7ex3zx2yq35ssxawpn - - &sshd-at-dragon age1ez4why08hdx0qf940cjzs6ep4q5rk2gqq7lp99pe58fktpwv65esx4xrht + - &sshd-at-dragon age12x49p3mwf27r9gdkfmfqu7lr6gwcwznlhcvcgmv8dz3gac2mkdgsp36y9p - &ssh-foxtrot age1njnet9ltjuxasqv3ckn67r5natke6xgd8wlx8psf64pyc4duvurqhedw80 # after updating this file, you may need to update the keys for any associated files like so: diff --git a/disko/default.nix b/disko/default.nix index 2a8b32d..ea75e54 100644 --- a/disko/default.nix +++ b/disko/default.nix @@ -1,8 +1,35 @@ {lib, ...}: let inherit (lib.attrsets) mapAttrs' filterAttrs; -in { + ESP = inputs @ { + size ? "4G", + label ? "ESP", + name ? "ESP", + }: + { + priority = 1; + start = "1M"; + label = label; + name = name; + end = size; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "umask=0077" + ]; + }; + } + // inputs; +in rec { standardWithHibernateSwap = { - disks ? ["/dev/sda"], + esp ? { + label = "ESP"; + size = "4G"; + name = "ESP"; + }, + disk, swapSize, ... }: { @@ -17,24 +44,11 @@ in { disk = { primary = { type = "disk"; - device = builtins.elemAt disks 0; + device = disk; content = { type = "gpt"; partitions = { - ESP = { - label = "EFI"; - name = "ESP"; - size = "4G"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ - "defaults" - ]; - }; - }; + ESP = ESP esp; swap = { size = swapSize; content = { @@ -48,7 +62,6 @@ in { content = { type = "luks"; name = "crypted"; - extraOpenArgs = ["--allow-discards"]; # if you want to use the key for interactive login be sure there is no trailing newline # for example use `echo -n "password" > /tmp/secret.key` keyFile = "/tmp/secret.key"; # Interactive @@ -58,75 +71,13 @@ in { type = "btrfs"; extraArgs = ["-f"]; subvolumes = { - "/nixos" = { + "/rootfs" = { mountpoint = "/"; - mountOptions = ["compress=zstd" "noatime"]; + mountOptions = ["compress=zstd"]; }; "/home" = { mountpoint = "/home"; - mountOptions = ["compress=zstd" "noatime"]; - }; - "/nix" = { - mountpoint = "/nix"; - mountOptions = ["compress=zstd" "noatime"]; - }; - }; - }; - }; - }; - }; - }; - }; - }; - }; - }; - standard = {disks ? ["/dev/vda"], ...}: { - # this is my standard partitioning scheme for my machines: an LUKS-encrypted - # btrfs volume - disko.devices = { - disk = { - primary = { - type = "disk"; - device = builtins.elemAt disks 0; - content = { - type = "gpt"; - partitions = { - ESP = { - label = "EFI"; - name = "ESP"; - size = "512M"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ - "defaults" - ]; - }; - }; - luks = { - size = "100%"; - content = { - type = "luks"; - name = "crypted"; - extraOpenArgs = ["--allow-discards"]; - # if you want to use the key for interactive login be sure there is no trailing newline - # for example use `echo -n "password" > /tmp/secret.key` - keyFile = "/tmp/secret.key"; # Interactive - # settings.keyFile = "/tmp/password.key"; - # additionalKeyFiles = ["/tmp/additionalSecret.key"]; - content = { - type = "btrfs"; - extraArgs = ["-f"]; - subvolumes = { - "/root" = { - mountpoint = "/"; - mountOptions = ["compress=zstd" "noatime"]; - }; - "/home" = { - mountpoint = "/home"; - mountOptions = ["compress=zstd" "noatime"]; + mountOptions = ["compress=zstd"]; }; "/nix" = { mountpoint = "/nix"; @@ -143,38 +94,84 @@ in { }; }; - unencrypted = {disks ? ["/dev/vda"], ...}: { + foxtrot = standardWithHibernateSwap { + disk = "nvme0n1"; + swapSize = "32G"; + esp = { + label = "disk-primary-ESP"; + name = "disk-primary-ESP"; + }; + }; + + standard = {disk, ...}: { + # this is my standard partitioning scheme for my machines: an LUKS-encrypted + # btrfs volume disko.devices = { disk = { primary = { type = "disk"; - device = builtins.elemAt disks 0; + device = disk; content = { type = "gpt"; partitions = { - ESP = { - label = "EFI"; - name = "ESP"; - size = "512M"; - type = "EF00"; + ESP = ESP {size = "4G";}; + luks = { + size = "100%"; content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ - "defaults" - ]; + type = "luks"; + name = "crypted"; + # if you want to use the key for interactive login be sure there is no trailing newline + # for example use `echo -n "password" > /tmp/secret.key` + keyFile = "/tmp/secret.key"; # Interactive + # settings.keyFile = "/tmp/password.key"; + # additionalKeyFiles = ["/tmp/additionalSecret.key"]; + content = { + type = "btrfs"; + extraArgs = ["-f"]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = ["compress=zstd"]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = ["compress=zstd"]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = ["compress=zstd" "noatime"]; + }; + }; + }; }; }; + }; + }; + }; + }; + }; + }; + + unencrypted = {disk, ...}: { + disko.devices = { + disk = { + primary = { + type = "disk"; + device = disk; + content = { + type = "gpt"; + partitions = { + ESP = ESP {size = "5G";}; root = { size = "100%"; content = { type = "btrfs"; extraArgs = ["-f"]; + mountpoint = "/partition-root"; subvolumes = { - "/root" = { + "/rootfs" = { mountpoint = "/"; - mountOptions = []; + mountOptions = ["compress=zstd"]; }; "/home" = { mountpoint = "/home"; @@ -390,7 +387,7 @@ in { }; }; }; - legacy = {disks ? ["/dev/vda"], ...}: { + legacy = {disks, ...}: { disko.devices = { disk = { primary = { diff --git a/flake.lock b/flake.lock index 74483e3..75fd8f7 100644 --- a/flake.lock +++ b/flake.lock @@ -117,10 +117,44 @@ "type": "github" } }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, "locked": { "lastModified": 1726560853, "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", @@ -135,7 +169,7 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "inputs": { "systems": "systems_4" }, @@ -170,9 +204,34 @@ "type": "github" } }, - "git-hooks": { + "ghostty": { "inputs": { "flake-compat": "flake-compat", + "nixpkgs-stable": [ + "nixpkgs" + ], + "nixpkgs-unstable": [ + "nixpkgs-unstable" + ], + "zig": "zig" + }, + "locked": { + "lastModified": 1735330177, + "narHash": "sha256-JGoqNnhSr632eLo1NWKJWoZyepCZlXT0o1/2A6e1Ph4=", + "owner": "ghostty-org", + "repo": "ghostty", + "rev": "8111f5b9958c21e0157f63cc4ce2dfc2329c67ac", + "type": "github" + }, + "original": { + "owner": "ghostty-org", + "repo": "ghostty", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", "gitignore": "gitignore", "nixpkgs": [ "nixpkgs" @@ -195,7 +254,7 @@ }, "git-hooks_2": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "gitignore": "gitignore_3", "nixpkgs": [ "slippi", @@ -317,10 +376,18 @@ "helix": { "inputs": { "crane": "crane", +<<<<<<< HEAD "flake-utils": "flake-utils", "nixpkgs": [ "nixpkgs-unstable" ], +||||||| b4bc4ce + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", +======= + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs", +>>>>>>> origin/main "rust-overlay": "rust-overlay" }, "locked": { @@ -471,7 +538,7 @@ "nixpkgs-unstable" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems_3", "xdph": "xdph" }, "locked": { @@ -801,7 +868,7 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "gitignore": "gitignore_2", "nixpkgs": [ "hyprland", @@ -826,6 +893,7 @@ "root": { "inputs": { "disko": "disko", + "ghostty": "ghostty", "git-hooks": "git-hooks", "hardware": "hardware", "helix": "helix", @@ -945,6 +1013,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -959,7 +1042,7 @@ "type": "github" } }, - "systems_3": { + "systems_4": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -991,7 +1074,7 @@ }, "wezterm": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "freetype2": "freetype2", "harfbuzz": "harfbuzz", "libpng": "libpng", @@ -1058,6 +1141,31 @@ "type": "github" } }, + "zig": { + "inputs": { + "flake-compat": [ + "ghostty" + ], + "flake-utils": "flake-utils", + "nixpkgs": [ + "ghostty", + "nixpkgs-stable" + ] + }, + "locked": { + "lastModified": 1717848532, + "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=", + "owner": "mitchellh", + "repo": "zig-overlay", + "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43", + "type": "github" + }, + "original": { + "owner": "mitchellh", + "repo": "zig-overlay", + "type": "github" + } + }, "zlib": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 2167e91..0b90410 100644 --- a/flake.nix +++ b/flake.nix @@ -43,6 +43,10 @@ jovian.url = "github:Jovian-Experiments/Jovian-NixOS/development"; jovian.inputs.nixpkgs.follows = "nixpkgs-unstable"; + ghostty.url = "github:ghostty-org/ghostty"; + ghostty.inputs.nixpkgs-unstable.follows = "nixpkgs-unstable"; + ghostty.inputs.nixpkgs-stable.follows = "nixpkgs"; + # nnf.url = "github:thelegy/nixos-nftables-firewall?rev=71fc2b79358d0dbacde83c806a0f008ece567b7b"; mobile-nixos = { @@ -60,6 +64,7 @@ "https://nix-community.cachix.org" "https://nix.h.lyte.dev" "https://hyprland.cachix.org" + "https://ghostty.cachix.org" ]; extra-trusted-public-keys = [ @@ -68,6 +73,7 @@ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "h.lyte.dev-2:te9xK/GcWPA/5aXav8+e5RHImKYMug8hIIbhHsKPN0M=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns=" ]; }; @@ -88,6 +94,7 @@ # nnf, # hyprland, slippi, + ghostty, ... }: let inherit (self) outputs; @@ -334,7 +341,7 @@ modules = with nixosModules; [ home-manager-unstable-defaults - outputs.diskoConfigurations.standard + outputs.diskoConfigurations.unencrypted hardware.nixosModules.common-cpu-amd hardware.nixosModules.common-pc-ssd @@ -463,7 +470,7 @@ modules = with nixosModules; [ home-manager-unstable-defaults - outputs.diskoConfigurations.standard + outputs.diskoConfigurations.foxtrot hardware.nixosModules.framework-13-7040-amd common @@ -490,6 +497,7 @@ ]; }; environment.systemPackages = with pkgs; [ + ghostty.outputs.packages.${pkgs.system}.ghostty fw-ectool (writeShellApplication { @@ -597,7 +605,7 @@ swapSize = "32G"; }; } - outputs.diskoConfigurations.standardWithHibernateSwap + outputs.diskoConfigurations.standard hardware.nixosModules.lenovo-thinkpad-t480 hardware.nixosModules.common-pc-laptop-ssd @@ -605,7 +613,7 @@ common password-manager graphical-workstation - plasma6 + # plasma6 laptop gaming diff --git a/modules/home-manager/eww/eww.yuck b/modules/home-manager/eww/eww.yuck index 0133c45..30ce94e 100644 --- a/modules/home-manager/eww/eww.yuck +++ b/modules/home-manager/eww/eww.yuck @@ -13,7 +13,7 @@ (geometry :x "0%" :y "5px" - :width "100%" + :width "80%" :height "32px" :anchor "bottom center") (bar)) @@ -25,10 +25,10 @@ :geometry (geometry :x "0%" - :y "20%" - :width "90%" - :height "60px" - :anchor "top center") + :y "5px" + :width "80%" + :height "32px" + :anchor "bottom center") (bar)) (defwidget rightsidestuff [] diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix index 9fb0789..1b1d108 100644 --- a/modules/home-manager/hyprland.nix +++ b/modules/home-manager/hyprland.nix @@ -11,6 +11,7 @@ in { # TODO: Hyprland seems to sometimes use a ton of CPU? home.packages = with pkgs; [ + glib swayosd ]; @@ -47,8 +48,15 @@ in { "hypridle" ]; + exec = [ + ''gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"'' + ''gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"'' + ]; + env = [ "XCURSOR_SIZE,24" + "QT_QPA_PLATFORMTHEME,qt6ct" + "GTK_THEME,Adwaita-dark" ]; input = { @@ -96,7 +104,7 @@ in { gaps_out = 6; border_size = 2; resize_on_border = true; - no_focus_fallback = true; + no_focus_fallback = false; layout = "dwindle"; }; @@ -129,7 +137,7 @@ in { "$mod SHIFT, return, exec, wezterm" */ "$mod, return, exec, wezterm" - "$mod SHIFT, return, exec, kitty" + "$mod SHIFT, return, exec, [float] wezterm start --always-new-process" "$mod, U, exec, firefox" "$mod, space, exec, tofi-run | xargs hyprctl dispatch exec --" "$mod, C, killactive," @@ -150,10 +158,10 @@ in { "$mod, l, movefocus, r" "$mod, k, movefocus, u" "$mod, j, movefocus, d" - "$mod SHIFT, H, movewindow, l" - "$mod SHIFT, L, movewindow, r" - "$mod SHIFT, K, movewindow, u" - "$mod SHIFT, J, movewindow, d" + "$mod SHIFT, H, movewindow, l silent" + "$mod SHIFT, L, movewindow, r silent" + "$mod SHIFT, K, movewindow, u silent" + "$mod SHIFT, J, movewindow, d silent" "$mod SHIFT, V, exec, swayosd-client --input-volume mute-toggle" ", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle" @@ -184,16 +192,16 @@ in { "$mod, 0, workspace, 10" # Move active window to a workspace with mod + SHIFT + [0-9] - "$mod SHIFT, 1, movetoworkspace, 1" - "$mod SHIFT, 2, movetoworkspace, 2" - "$mod SHIFT, 3, movetoworkspace, 3" - "$mod SHIFT, 4, movetoworkspace, 4" - "$mod SHIFT, 5, movetoworkspace, 5" - "$mod SHIFT, 6, movetoworkspace, 6" - "$mod SHIFT, 7, movetoworkspace, 7" - "$mod SHIFT, 8, movetoworkspace, 8" - "$mod SHIFT, 9, movetoworkspace, 9" - "$mod SHIFT, 0, movetoworkspace, 10" + "$mod SHIFT, 1, movetoworkspacesilent, 1" + "$mod SHIFT, 2, movetoworkspacesilent, 2" + "$mod SHIFT, 3, movetoworkspacesilent, 3" + "$mod SHIFT, 4, movetoworkspacesilent, 4" + "$mod SHIFT, 5, movetoworkspacesilent, 5" + "$mod SHIFT, 6, movetoworkspacesilent, 6" + "$mod SHIFT, 7, movetoworkspacesilent, 7" + "$mod SHIFT, 8, movetoworkspacesilent, 8" + "$mod SHIFT, 9, movetoworkspacesilent, 9" + "$mod SHIFT, 0, movetoworkspacesilent, 10" "$mod SHIFT, S, exec, clipshot" # Scroll through existing workspaces with mod + scroll diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 2f2f7b8..9633fa7 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -86,9 +86,11 @@ xdg.portal = { enable = true; wlr.enable = true; + # gtk.enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-wlr + xdg-desktop-portal-gtk ]; }; diff --git a/nixos/beefcake.nix b/nixos/beefcake.nix index ca178e5..8ea10ee 100644 --- a/nixos/beefcake.nix +++ b/nixos/beefcake.nix @@ -866,7 +866,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00 pkgs.writeText "header.tmpl" '' - + ''; forgejoCustomHomeTmpl = pkgs.writeText "home.tmpl" @@ -1263,6 +1263,10 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00 }; virtualisation.oci-containers.containers.minecraft-flanilla = { autoStart = false; + + environmentFiles = [ + # config.sops.secrets."jland.env".path + ]; image = "docker.io/itzg/minecraft-server"; # user = "${toString uid}:${toString gid}"; extraOptions = ["--tty" "--interactive"]; diff --git a/nixos/foxtrot.nix b/nixos/foxtrot.nix index 53e0e26..9a5291b 100644 --- a/nixos/foxtrot.nix +++ b/nixos/foxtrot.nix @@ -1,248 +1,8 @@ -{pkgs, ...}: -/* -## source: https://community.frame.work/t/speakers-sound-quality/1078/82 -let - pipewire-speakers-profile-json = ''{ - "output": { - "blocklist": [], - "equalizer": { - "balance": 0.0, - "bypass": false, - "input-gain": 0.0, - "left": { - "band0": { - "frequency": 100.0, - "gain": 0.0, - "mode": "RLC (BT)", - "mute": false, - "q": 1.0, - "slope": "x4", - "solo": false, - "type": "Hi-pass" - }, - "band1": { - "frequency": 150.0, - "gain": 4.02, - "mode": "RLC (BT)", - "mute": false, - "q": 3.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band2": { - "frequency": 600.0, - "gain": -5.07, - "mode": "RLC (BT)", - "mute": false, - "q": 4.000000000000008, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band3": { - "frequency": 1200.0, - "gain": -3.49, - "mode": "RLC (BT)", - "mute": false, - "q": 4.17, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band4": { - "frequency": 2000.0, - "gain": 1.43, - "mode": "RLC (BT)", - "mute": false, - "q": 4.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band5": { - "frequency": 5300.0, - "gain": 3.84, - "mode": "RLC (BT)", - "mute": false, - "q": 2.64, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band6": { - "frequency": 6000.0, - "gain": 4.02, - "mode": "RLC (BT)", - "mute": false, - "q": 4.36, - "slope": "x1", - "solo": false, - "type": "Hi-shelf" - }, - "band7": { - "frequency": 7500.0, - "gain": -2.09, - "mode": "RLC (BT)", - "mute": false, - "q": 3.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band8": { - "frequency": 8000.0, - "gain": 2.01, - "mode": "RLC (BT)", - "mute": false, - "q": 4.36, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band9": { - "frequency": 900.0, - "gain": -4.12, - "mode": "RLC (BT)", - "mute": false, - "q": 5.909999999999967, - "slope": "x1", - "solo": false, - "type": "Bell" - } - }, - "mode": "IIR", - "num-bands": 10, - "output-gain": -1.5, - "pitch-left": 0.0, - "pitch-right": 0.0, - "right": { - "band0": { - "frequency": 100.0, - "gain": 0.0, - "mode": "RLC (BT)", - "mute": false, - "q": 1.0, - "slope": "x4", - "solo": false, - "type": "Hi-pass" - }, - "band1": { - "frequency": 150.0, - "gain": 4.02, - "mode": "RLC (BT)", - "mute": false, - "q": 3.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band2": { - "frequency": 600.0, - "gain": -5.07, - "mode": "RLC (BT)", - "mute": false, - "q": 4.000000000000008, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band3": { - "frequency": 1200.0, - "gain": -3.49, - "mode": "RLC (BT)", - "mute": false, - "q": 4.17, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band4": { - "frequency": 2000.0, - "gain": 1.43, - "mode": "RLC (BT)", - "mute": false, - "q": 4.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band5": { - "frequency": 5300.0, - "gain": 3.84, - "mode": "RLC (BT)", - "mute": false, - "q": 2.64, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band6": { - "frequency": 6000.0, - "gain": 4.02, - "mode": "RLC (BT)", - "mute": false, - "q": 4.36, - "slope": "x1", - "solo": false, - "type": "Hi-shelf" - }, - "band7": { - "frequency": 7500.0, - "gain": -2.09, - "mode": "RLC (BT)", - "mute": false, - "q": 3.0, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band8": { - "frequency": 8000.0, - "gain": 2.01, - "mode": "RLC (BT)", - "mute": false, - "q": 4.36, - "slope": "x1", - "solo": false, - "type": "Bell" - }, - "band9": { - "frequency": 900.0, - "gain": -4.12, - "mode": "RLC (BT)", - "mute": false, - "q": 5.909999999999967, - "slope": "x1", - "solo": false, - "type": "Bell" - } - }, - "split-channels": false - }, - "loudness": { - "bypass": false, - "clipping": false, - "clipping-range": 6.0, - "fft": "4096", - "input-gain": 0.0, - "output-gain": 0.0, - "std": "ISO226-2003", - "volume": 6.999999999999991 - }, - "plugins_order": [ - "loudness", - "equalizer" - ] - } -}''; -in -*/ -{ +{pkgs, ...}: { imports = [ { - system.stateVersion = "24.05"; - home-manager.users.daniel.home.stateVersion = "24.05"; + system.stateVersion = "24.11"; + home-manager.users.daniel.home.stateVersion = "24.11"; networking.hostName = "foxtrot"; } { @@ -254,10 +14,9 @@ in sudo btrfs filesystem mkswapfile --size 32g --uuid clear /swap/swapfile sudo swapon /swap/swapfile */ - {device = "/swap/swapfile";} ]; # findmnt -no UUID -T /swap/swapfile - boot.resumeDevice = "/dev/disk/by-uuid/81c3354a-f629-4b6b-a249-7705aeb9f0d5"; + # boot.resumeDevice = "/dev/disk/by-uuid/81c3354a-f629-4b6b-a249-7705aeb9f0d5"; # systemd.sleep.extraConfig = "HibernateDelaySec=180m"; services.fwupd.enable = true; services.fwupd.extraRemotes = ["lvfs-testing"]; @@ -337,7 +96,7 @@ in ]; # See https://wiki.hyprland.org/Configuring/Keywords/ for more monitor = [ - "eDP-1,2880x1920@120Hz,0x0,1.66667" + "eDP-1,2880x1920@120Hz,0x0,1.5" ]; }; }; @@ -430,6 +189,7 @@ in kernelParams = [ "rtc_cmos.use_acpi_alarm=1" "amdgpu.sg_display=0" + "boot.shell_on_fail=1" "acpi_osi=\"!Windows 2020\"" # "nvme.noacpi=1" # maybe causing crashes upon waking? diff --git a/nixos/router.nix b/nixos/router.nix index 751b99b..d0dbc29 100644 --- a/nixos/router.nix +++ b/nixos/router.nix @@ -162,6 +162,7 @@ in { in { enable = true; checkRuleset = true; + flushRuleset = true; ruleset = with inf; '' table inet filter { ## set LANv4 { diff --git a/nixos/thinker.nix b/nixos/thinker.nix index 3fd7a1b..a695440 100644 --- a/nixos/thinker.nix +++ b/nixos/thinker.nix @@ -12,9 +12,59 @@ btrfs inspect-internal map-swapfile -r /swap/swapfile https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file */ - kernelParams = ["boot.shell_on_fail"]; + # kernelParams = ["boot.shell_on_fail"]; initrd.availableKernelModules = ["xhci_pci" "nvme" "ahci"]; }; + home-manager.users.daniel = { + programs.hyprlock.settings = { + label = [ + { + monitor = ""; + font_size = 32; + + halign = "center"; + valign = "center"; + text_align = "center"; + color = "rgba(255, 255, 255, 0.5)"; + + position = "0 -500"; + font_family = "IosevkaLyteTerm"; + text = "cmd[update:30000] acpi"; + + shadow_passes = 3; + shadow_size = 1; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_boost = 1.0; + } + ]; + }; + services.hypridle = let + secondsPerMinute = 60; + lockSeconds = 10 * secondsPerMinute; + in { + settings = { + listener = [ + { + timeout = lockSeconds + 55; + on-timeout = ''systemctl suspend''; + } + ]; + }; + }; + + wayland.windowManager.hyprland = { + settings = { + exec-once = [ + "eww open bar0" + ]; + # See https://wiki.hyprland.org/Configuring/Keywords/ for more + monitor = [ + "eDP-1,1920x1080@60Hz,0x0,1.0" + ]; + }; + }; + }; + hardware.bluetooth.enable = true; } diff --git a/secrets/beefcake/secrets.yml b/secrets/beefcake/secrets.yml index b8afa1a..f3b9f82 100644 --- a/secrets/beefcake/secrets.yml +++ b/secrets/beefcake/secrets.yml @@ -28,6 +28,7 @@ restic-rascal-ssh-private-key: ENC[AES256_GCM,data:ddsOs0XsayyQI9qc6LzwQpdDnfwNp restic-ssh-priv-key-benland: ENC[AES256_GCM,data:G+uiYZTvqXhpJb66j6Q6S+otlXeRX0CdYeMHzSMjIbvbI0AVm0yCU7COO5/O8i47NpvrKKS1kVxVEK8ixLRUowkl3hgRXhxsBIPFnpkMD0ENmJttm4HOpi0qIWMwzPYTjkz/slY4HcTFnCfYy1ZpURQdWwZsr1EdAA05bUMTtM22R3uOMzjO8uf72PCWX7yffo8MxsLmWvNVAOhVlrb2H5KQNR/IquFK3TFoZitq5nVDG9tcEFkX+lgA3zsmCHU/2DvvodgeRoltaAFvgjVznNGf4e5p8owHUtSzX52HwGZRiUlMuhpre2gm1r73n8AyZe41II+LX/85fMfZDdyayIGv3AAMBib8H0/AoChexRcdLQEmzOgRrXsgucDJrWSWP6WMBVyamUm79m5ep0fvL1lJftuJqN0uuq9dBrispdso4x+6jk/pDf5pEM/FE6s1rY832BEb7q0PnjyvVogOez+cIihmMpDdnS0A/8TFzg29i3C+93x5vrt3k7atNzR/jN+/GqX2FKLzxWrrIw2d,iv:IP+N8JQu+XRvwTtBnxu54ujzU5UliltXG3mk9HfJaN8=,tag:4oinE9QMaSh8IfUd/ttM3Q==,type:str] paperless-superuser-password: ENC[AES256_GCM,data:lypWK73mOYI2hyQAW/4T3cDiVtsts3kKb7LZb9ES3n97Kn5l,iv:jBHUBFbb4GqQ3gnK0h5VCaGj3/kd3/eGa1QFiE7+B9I=,tag:UoQar+x1xVnCV2k+9hYjWA==,type:str] factorio-server-settings: ENC[AES256_GCM,data:KlHkHGenkoLtqt0YCETwQdhH0tvvqsyake3lC9Wimso3Y8IXvDfkLpOTE53Jq4frf1QMJh0LYyle+AmIgGvB0gAp/4fM1E4Ah9JPtKkcjVPyQIypuaDsPaVQMxMlJt1+TLX2fbSWdxOo0lulNg==,iv:AHq37PY3ZxKF0+ClUrSvhJSBuXFtGZLBZW/ZADrVqLI=,tag:B0gFyy6rmd6CGJfzAhO02A==,type:str] +flanilla.env: ENC[AES256_GCM,data:qp0cpjHgpFx2gICtH8vNusJt08MLOIS3,iv:lugXNEJpMJ8mSwvo2jDwTwsY0x3kcHQDc29Z2Wz+LB4=,tag:0/FWQKUXePemFWGXbH1Tjg==,type:str] sops: kms: [] gcp_kms: [] @@ -52,8 +53,8 @@ sops: bGpacHFRSkJYUUMwOEh4cVBXZ1NESmsKa5EhZ7148ojCqZldukLcPLr93HqnpNgq rMI0Nyz4Z4lkTVMRpA94zyNTkNwJ02/CYcKi8EJi6jGZnNPUTcnTwg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-10-22T22:31:46Z" - mac: ENC[AES256_GCM,data:nCGtkRXZuo3SZLjL2I3fJelaS1g9U4SVdzPZlZPgXzCWVyxokIMFwoSM15HgDu5KsFR+3kIfWVzIQk/lwt9lQPG3O6iUkfPRsIg0dnVrNSauNk0QXR91vCVlDmbFuDUf0C4EVrbE9RRgHzGzToSJYxQHSInMYVhJBcBfdbYZF9A=,iv:qu6p45+ATOs5Ms3bqM8ynXK0tKnN3wNmtwAsc2DSQbU=,tag:xpTeHWawPXfeqq/azPIPPg==,type:str] + lastmodified: "2024-12-26T16:42:22Z" + mac: ENC[AES256_GCM,data:COh57637D7BnYa2ke+SsGnRuyWmS3X6xDJNV0ATWEHqKjckZ2tqyfL1ugGuokmqilIsRcXi2q5sqCd8uNrWZLicZ/6eQ5w7CqoFU8OEON6ERibQ36X0oLsz9teuT+bx9ZMfzYOKh0LZY0XP9es7W+4PC3XiBJcIB2GWTTrrGaI4=,iv:aeBvVjC7Qn/ohYmpC6lvcve0bMSBsvfRSa1kyiyj0Rg=,tag:hld5rkOq5mfcGFShKuKgng==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.9.0 + version: 3.9.1 diff --git a/secrets/dragon/secrets.yml b/secrets/dragon/secrets.yml index e98ae5d..dd89775 100644 --- a/secrets/dragon/secrets.yml +++ b/secrets/dragon/secrets.yml @@ -8,20 +8,20 @@ sops: - recipient: age1stdue5q5teskee057ced6rh9pzzr93xsy66w4sc3zu49rgxl7cjshztt45 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCTitMaFRiK1BSMEcwRmNk - Q0hmOGlZSFpkUUhyZkkwSU40QXB5cmlkR1FRCkRhbVBXQ2FjUzRhdEhrSEZKcWhM - dTNuVUljU0NSbVQzbXhZeFNENmN5QjgKLS0tIDFncEMrUCtWWTMyUGZIelY5aXB4 - NmJWeDFSVVoxZCtRWlhNNXNyVWRvY28KgPbg6RScxBrxI0DvD6R7iKm8/70kJLdG - FhbgK9d/7UPMfefluEah7vKzXV/dn+/4KsCJuKFFZ1AsM5hDFQ+JGQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlSFVjMEhNUEF5Q1ZWRmRB + cUQvQ0JYY2ZzNndPeVN4UTNhTUxZVzBvc3hBCkcwNHUyeEhMZFFHU3RIQWlONTRT + dUhlZUlHRjJQeGZwRk9td1FSZzZtR0kKLS0tIHphbVpncE9HLys2bWJicUtmU2Fp + b05GOEpRVURQYnJSZzhhalp3TW1kbHMKk/z68IP6WMZV+PbjJvM2EWhacJZoLMj3 + iSGt5TqerVUOrQT00+Gx3laImdismLp9CjulEl82QyaYpmUvVYkEMA== -----END AGE ENCRYPTED FILE----- - - recipient: age1ez4why08hdx0qf940cjzs6ep4q5rk2gqq7lp99pe58fktpwv65esx4xrht + - recipient: age12x49p3mwf27r9gdkfmfqu7lr6gwcwznlhcvcgmv8dz3gac2mkdgsp36y9p enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXa1owK21QNUovZzZHekpw - OWdsSy9ZcmhGNzc1enNGVHRHTTlSb1E5UEJJCkF3MlpYQ1c5UGNySk94aENHMDh2 - ME1rUlZscHFYSUVwOWFSczZGV2Z5aEEKLS0tIFlXTUFZaVJtWXltZGdEZzJPSjFJ - bTdCNS9zMzdvT2NiZVRyT1JzVmRFUFEKguq2i4rnVvGECZlUcEEubXfv4Ya/zI1N - 3mWQslPHgnnWuwG7flbvafHYnyZCXsMqNKnNDM6wayDgKAbtCx3Syg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6eW9QekJRTzlNWHVvK3hD + b0ZTWDdWY2RiZTBwZEZMcnpEMjlydkJrOGlrCldxZFhHcjlGRVRYNVJEc0R4Y1BZ + TldMNW81a2VjMm5SWHhHNFRVMWlFQTgKLS0tIEIycWtsT3pEbVZIc2FvZGpsbENz + MENZdE13U2J0eWtoOHJSbEJ3TVFUS2sK23t+MAjYfBI1j7B97mU0akq8zuRh7pOv + admjZR86rxMqs/Guj+nKhQ2pn/JeozlPOvwiaxD9eIVJBtIQK2my4A== -----END AGE ENCRYPTED FILE----- lastmodified: "2024-09-14T12:41:15Z" mac: ENC[AES256_GCM,data:sO3omCYH1urB/qcW3VippCinCUO1cmp5KrUSQk5ms7k+i9xUhdL3tTYHGVTa4PHV6VluukKnHuwAijo+rneNdCeMdIkAEskk/X6SDYgkwmjXuNcNEA4la22EqSrenJ8W3UafHDvP8+vpUKAzVo0E82Vmo9/YNJaqvqQM8PtciSc=,iv:2GboNZpAezZsWK3CbcwVw40zW4CucP3JhsYlvZ/Hy2M=,tag:w3XmkN76oYV+PmliPB01MQ==,type:str] diff --git a/templates/rust/.gitignore b/templates/rust/.gitignore index 228f69f..86c240d 100644 --- a/templates/rust/.gitignore +++ b/templates/rust/.gitignore @@ -1,3 +1,4 @@ /target +/result /.direnv /.pre-commit-config.yaml diff --git a/templates/rust/flake.nix b/templates/rust/flake.nix index af7240e..57d515b 100644 --- a/templates/rust/flake.nix +++ b/templates/rust/flake.nix @@ -3,12 +3,12 @@ inputs.git-hooks.url = "github:cachix/git-hooks.nix"; inputs.git-hooks.inputs.nixpkgs.follows = "nixpkgs"; outputs = inputs: let - inherit (import nix/boilerplate.nix inputs) fullImport genPkgs; + inherit (import nix/boilerplate.nix inputs) call genPkgs; in { # overlays = import nix/overlays.nix; - checks = fullImport nix/checks.nix; - packages = fullImport nix/packages.nix; - devShells = fullImport nix/shells.nix; + checks = call (import nix/checks.nix); + packages = call (import nix/packages.nix); + devShells = call (import nix/shells.nix); formatter = genPkgs (p: p.alejandra); }; } diff --git a/templates/rust/nix/boilerplate.nix b/templates/rust/nix/boilerplate.nix index 2778326..e0b4acd 100644 --- a/templates/rust/nix/boilerplate.nix +++ b/templates/rust/nix/boilerplate.nix @@ -4,7 +4,7 @@ inputs @ { ... }: let forSelfOverlay = - if builtins.hasAttr "forSelf" self.overlays + if builtins.hasAttr "overlays" self && builtins.hasAttr "forSelf" self.overlays then self.overlays.forSelf else (_: p: p); in rec { diff --git a/templates/rust/nix/packages.nix b/templates/rust/nix/packages.nix index 7d1b63b..72d06e2 100644 --- a/templates/rust/nix/packages.nix +++ b/templates/rust/nix/packages.nix @@ -1,6 +1,6 @@ {pkgs, ...}: rec { - lyrs = pkgs.rustPlatform.buildRustPackage { - pname = "lyrs"; + my-package = pkgs.rustPlatform.buildRustPackage { + pname = "my-binary"; version = "0.1.0"; /* @@ -15,38 +15,8 @@ src = ./..; hash = pkgs.lib.fakeHash; - cargoHash = "sha256-XHCXOlG4sdr1A3lqIK/7bB3soms1jxMIdfsFABmHVog="; + cargoHash = pkgs.lib.fakeHash; }; - pwatch = pkgs.writeShellScriptBin "pwatch" '' - dir="$(dirname "$(cargo locate-project --workspace --message-format plain)")" - pushd "$dir" - - additional_watchexec_args="" - if [[ -f apps/$pkg/build.rs ]]; then - additional_watchexec_args="--watch apps/$pkg/build.rs" - fi - - pkg="$1"; shift - cargo_subcmd="$1"; shift - cargo_subcmd_args="$@"; shift - - argfile="apps/$pkg/.watchexec.argfile" - argfile_args="" - - if [[ -f $argfile ]]; then - argfile_args="@$argfile" - fi - watchexec $argfile_args --stop-timeout 0s --restart \ - --watch Cargo.toml \ - --watch libs \ - --watch apps/$pkg/src/ \ - --watch apps/$pkg/Cargo.toml \ - $additional_watchexec_args \ - cargo "$cargo_subcmd" --package "$pkg" "$cargo_subcmd_args" - - popd - ''; - - default = lyrs; + default = my-package; } diff --git a/templates/rust/nix/shells.nix b/templates/rust/nix/shells.nix index a5f3e2b..85be850 100644 --- a/templates/rust/nix/shells.nix +++ b/templates/rust/nix/shells.nix @@ -5,9 +5,9 @@ }: let inherit (pkgs) system; in rec { - lyrs-dev = pkgs.mkShell { + my-package-dev = pkgs.mkShell { inherit (self.checks.${system}.git-hooks) shellHook; - inputsFrom = [self.packages.${system}.lyrs]; + inputsFrom = [self.packages.${system}.my-package]; packages = with pkgs; [ convco rustPackages.clippy @@ -18,5 +18,5 @@ in rec { lldb ]; }; - default = lyrs-dev; + default = my-package-dev; }