From 8a928e8f58781818f4b0ed7445915111c524e1a0 Mon Sep 17 00:00:00 2001 From: Evar Date: Tue, 13 May 2025 11:40:10 -0400 Subject: [PATCH] misc: zed editor, try to get scream working, other small changes --- home/apps.nix | 4 +++- home/apps/zed.nix | 22 ++++++++++++++++++++++ home/terminal.nix | 1 + nixos/default.nix | 18 +++++++++++------- nixos/tailscale.nix | 4 ++++ nixos/vm.nix | 45 ++++++++++++++++++++++++++------------------- 6 files changed, 67 insertions(+), 27 deletions(-) create mode 100644 home/apps/zed.nix diff --git a/home/apps.nix b/home/apps.nix index b001962..4029147 100644 --- a/home/apps.nix +++ b/home/apps.nix @@ -5,6 +5,7 @@ imports = [ ./apps/firefox.nix ./apps/syncthing.nix + ./apps/zed.nix ]; home.packages = [ @@ -23,7 +24,7 @@ pkgs.libreoffice pkgs.gimp pkgs.krita - pkgs.okular + pkgs.kdePackages.okular pkgs.localsend pkgs.ffmpeg # Generally useful @@ -49,6 +50,7 @@ #pkgs.zed-editor pkgs.obsidian + pkgs.quickemu ]; programs.mpv.enable = true; # media player diff --git a/home/apps/zed.nix b/home/apps/zed.nix new file mode 100644 index 0000000..0d58507 --- /dev/null +++ b/home/apps/zed.nix @@ -0,0 +1,22 @@ +{ pkgs, ... }: +{ + programs.zed-editor = { + enable = true; + extensions = [ + "dockerfile" + # disabled until https://github.com/eth0net/zed-docker-compose/issues/2 + # "docker-compose" + + "nix" + ]; + installRemoteServer = true; + userSettings = { + "vim_mode" = true; + "terminal"."shell"."program" = "fish"; + + "lsp"."package-version-server"."binary"."path" = pkgs.package-version-server + "/bin/package-version-server"; + "lsp"."nixd"."binary"."path" = pkgs.nixd + "/bin/nixd"; + "lsp"."nil"."binary"."path" = pkgs.nil + "/bin/nil"; + }; + }; +} \ No newline at end of file diff --git a/home/terminal.nix b/home/terminal.nix index 2fa4c0e..1e21306 100644 --- a/home/terminal.nix +++ b/home/terminal.nix @@ -32,6 +32,7 @@ pkgs.pciutils # lspci pkgs.usbutils # lsusb + pkgs.btop pkgs.bottom pkgs.htop pkgs.lsof diff --git a/nixos/default.nix b/nixos/default.nix index ea6bc03..db51940 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -6,9 +6,9 @@ ... }: { - imports = [ + imports = [ inputs.disko.nixosModules.disko - + ./device.nix ./disk-config.nix ./hardware-configuration.nix @@ -28,7 +28,7 @@ ./vm.nix (import ./kvmfr.nix { std = inputs.nix-std.lib; lib = lib; pkgs = pkgs; config = config; }) ./libvirtd.nix - + ./osrs.nix ]; @@ -51,7 +51,7 @@ vfio = { enable = true; - earlyKMS = true; + earlyKMS = true; applyACSpatch = true; }; @@ -86,7 +86,7 @@ # }; # Allows referring to this flake by the shorthand `nixos-config`, which lets you do e.g. - # nix repl nixos-config + # nix repl nixos-config nix.registry.nixos-config.to = { type = "git"; url = "file://${config.users.users.evar.home}/git/nixos-framework-laptop-config"; @@ -94,7 +94,7 @@ # In order to catch all logs, we need to mount this early enough in the boot process. fileSystems."/var/log".neededForBoot = true; - + zramSwap = { enable = true; memoryPercent = 25; @@ -186,7 +186,11 @@ ### System software + nixpkgs.config.allowUnfree = true; + environment.systemPackages = [ + pkgs.unifi + pkgs.git pkgs.gdu @@ -254,4 +258,4 @@ # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? -} \ No newline at end of file +} diff --git a/nixos/tailscale.nix b/nixos/tailscale.nix index 05b37e0..f4343d8 100644 --- a/nixos/tailscale.nix +++ b/nixos/tailscale.nix @@ -4,6 +4,10 @@ pkgs, ... }: { + # to allow me to be an exit node + boot.kernel.sysctl."net.ipv4.ip_forward" = 1; + boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1; + services.tailscale = { enable = true; openFirewall = true; diff --git a/nixos/vm.nix b/nixos/vm.nix index f5893e0..f4b0cd4 100644 --- a/nixos/vm.nix +++ b/nixos/vm.nix @@ -90,22 +90,26 @@ in { networking.dhcpcd.denyInterfaces = [ "winvm0" ]; + # TODO: the below doesn't actually work, so I just + # disable wait-online entirely. # ensure the bridge network doesn't cause us to wait # on boot - systemd.network.wait-online.ignoredInterfaces = [ "eth0" "winvm0" ]; + # systemd.network.wait-online.ignoredInterfaces = [ "eth0" "winvm0" ]; + systemd.network.wait-online.anyInterface = true; boot.initrd.systemd.network.wait-online.ignoredInterfaces = [ "eth0" "winvm0" ]; # These are needed, since I'm not currently trying to # reserve a static IP for the bridge interface + networking.defaultGateway = { address = "10.0.0.1"; interface = "eth0"; }; networking.interfaces.winvm0 = { useDHCP = false; ipv4 = { addresses = [ - { address = "10.0.5.1"; prefixLength = 16; } + { address = "10.0.5.1"; prefixLength = 24; } ]; routes = [{ - address = "10.0.0.0"; - prefixLength = 16; + address = "10.0.5.1"; + prefixLength = 24; options = { scope = "link"; metric = "900"; }; }]; }; @@ -148,22 +152,25 @@ in { # note that the VM needs 64 MB for the shmem in side the # xml for the full res of the FW laptop - # systemd.tmpfiles.rules = [ - # "f /dev/shm/scream 0660 evar qemu-libvirtd -" - # "f /dev/shm/looking-glass 0660 evar qemu-libvirtd -" - # ]; + systemd.tmpfiles.rules = [ + "f /dev/shm/scream 0660 evar qemu-libvirtd -" + ]; # service for hooking up scream for audio - # systemd.user.services.scream-ivshmem = { - # enable = true; - # description = "Scream IVSHMEM"; - # serviceConfig = { - # ExecStart = "${pkgs.scream}/bin/scream-ivshmem-pulse /dev/shm/scream"; - # Restart = "always"; - # }; - # wantedBy = [ "multi-user.target" ]; - # requires = [ "pulseaudio.service" ]; - # }; + systemd.user.services.scream-ivshmem = { + enable = true; + description = "Scream"; + serviceConfig = { + ExecStart = "${pkgs.scream}/bin/scream -v -n scream -o pulse -m /dev/shm/scream"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + requires = [ + "pipewire-pulse.service" + "pipewire.service" + "sound.target" + ]; + }; boot = { initrd.kernelModules = [ @@ -215,7 +222,7 @@ in { "interfaces" = "virbr0"; # note: localhost is the ipv6 localhost ::1 - "hosts allow" = "192.168.122."; + "hosts allow" = "192.168.122. 100.64.0.0/10"; # "hosts deny" = "0.0.0.0/0"; "guest account" = "nobody"; "map to guest" = "bad user";