mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-25 09:36:14 +01:00
Add saw
the media bedside PC
Signed-off-by: magic_rb <magic_rb@redalder.org>
This commit is contained in:
parent
5b6dc7708e
commit
ef38ff156f
|
@ -103,6 +103,7 @@
|
|||
nixos/systems/grasshopper
|
||||
nixos/systems/inkbook
|
||||
nixos/systems/hela
|
||||
nixos/systems/saw
|
||||
|
||||
nixng/containers/ingress-blowhole
|
||||
nixng/containers/ingress-toothpick
|
||||
|
|
208
nixos/systems/saw/default.nix
Normal file
208
nixos/systems/saw/default.nix
Normal file
|
@ -0,0 +1,208 @@
|
|||
# SPDX-FileCopyrightText: 2024 Richard Brežák <richard@brezak.sk>
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
{
|
||||
inputs,
|
||||
lib',
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit
|
||||
(lib')
|
||||
flip
|
||||
mapAttrs
|
||||
singleton
|
||||
;
|
||||
|
||||
config' = config;
|
||||
in {
|
||||
flake.nixosConfigurations.saw = inputs.nixpkgs-stable.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
# lib = lib';
|
||||
|
||||
specialArgs = {
|
||||
config' = config';
|
||||
inputs' = inputs;
|
||||
secret = lib'.loadSecrets inputs.secret;
|
||||
};
|
||||
|
||||
modules =
|
||||
singleton
|
||||
({
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
river-gtk = pkgs.river.overrideAttrs (final: prev: {
|
||||
nativeBuildInputs =
|
||||
prev.nativeBuildInputs
|
||||
++ (with pkgs; [
|
||||
makeWrapper
|
||||
wrapGAppsHook3
|
||||
]);
|
||||
|
||||
buildInputs =
|
||||
prev.buildInputs
|
||||
++ (with pkgs; [
|
||||
gdk-pixbuf
|
||||
gsettings-desktop-schemas
|
||||
glib
|
||||
gtk3
|
||||
]);
|
||||
|
||||
postFixup = ''
|
||||
gappsWrapperArgsHook
|
||||
|
||||
wrapProgram $out/bin/river \
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
'';
|
||||
});
|
||||
|
||||
squeekboard = pkgs.squeekboard.overrideAttrs (final: prev: {
|
||||
patches =
|
||||
(prev.patches or [])
|
||||
++ [
|
||||
inputs.self.patches.squeekboard-layer-overlay
|
||||
];
|
||||
});
|
||||
|
||||
kodi-wayland = pkgs.kodi-wayland.withPackages (ps: [
|
||||
pkgs.kodi-wayland.pythonPackages.pillow
|
||||
]);
|
||||
in {
|
||||
imports = [
|
||||
inputs.disko.nixosModules.default
|
||||
inputs.impermenance.nixosModules.impermanence
|
||||
./nixpkgs.nix
|
||||
./users.nix
|
||||
../../common/remote_access.nix
|
||||
./disko.nix
|
||||
];
|
||||
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
|
||||
wireplumber.enable = true;
|
||||
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
jack.enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
programs.river = {
|
||||
enable = true;
|
||||
package = river-gtk;
|
||||
};
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${lib.getExe pkgs.cage} -s -- ${lib.getExe pkgs.greetd.regreet}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
config.common.default = [
|
||||
"gtk"
|
||||
];
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = singleton pkgs.xdg-desktop-portal-gtk;
|
||||
};
|
||||
|
||||
environment.persistence."/persist" = {
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/var/log"
|
||||
"/var/lib/nixos"
|
||||
];
|
||||
files = [
|
||||
"/etc/ssh/ssh_host_rsa_key"
|
||||
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||
"/etc/ssh/ssh_host_ed25519_key"
|
||||
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||
];
|
||||
users.main = {
|
||||
directories = [
|
||||
".kodi"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.main = {
|
||||
home.file.".config/river/init".executable = true;
|
||||
home.file.".config/river/init".text = ''
|
||||
# riverctl default-layout rivercarro
|
||||
# ${lib.getExe pkgs.rivercarro} -outer-gaps 0 &
|
||||
# riverctl send-layout-cmd rivercarro "main-location monocle"
|
||||
# riverctl spawn ${lib.getExe squeekboard}
|
||||
riverctl spawn ${lib.getExe kodi-wayland}
|
||||
'';
|
||||
home.file.".config/lavalauncher/active.conf".text = let
|
||||
launch = {
|
||||
jellyfin = pkgs.writeShellScript "launch-jellyfin" ''
|
||||
${lib.getExe pkgs.librewolf} http://jellyfin.in.redalder.org --kiosk
|
||||
'';
|
||||
pavucontrol = pkgs.writeShellScript "launch-pavucontrol" ''
|
||||
${lib.getExe pkgs.pavucontrol} & disown
|
||||
sleep 0.1
|
||||
riverctl toggle-fullscreen
|
||||
'';
|
||||
next = pkgs.writeShellScript "show-next" ''
|
||||
riverctl toggle-fullscreen
|
||||
riverctl focus-view next
|
||||
riverctl toggle-fullscreen
|
||||
'';
|
||||
};
|
||||
in ''
|
||||
global-settings
|
||||
{
|
||||
watch-config-file = true;
|
||||
}
|
||||
|
||||
bar {
|
||||
exclusive-zone = off;
|
||||
alignment = center;
|
||||
position = right;
|
||||
layer = overlay;
|
||||
|
||||
|
||||
button {
|
||||
command = ${launch.jellyfin};
|
||||
}
|
||||
|
||||
button {
|
||||
command = ${launch.pavucontrol};
|
||||
}
|
||||
|
||||
button {
|
||||
command = ${launch.next};
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
# xdg.portal.config.common = {
|
||||
# # Use xdg-desktop-portal-gtk for every portal interface...
|
||||
# default = "gtk";
|
||||
# # ... except for the ScreenCast, Screenshot and Secret
|
||||
# "org.freedesktop.impl.portal.ScreenCast" = "wlr";
|
||||
# "org.freedesktop.impl.portal.Screenshot" = "wlr";
|
||||
# # ignore inhibit bc gtk portal always returns as success,
|
||||
# # despite sway/the wlr portal not having an implementation,
|
||||
# # stopping firefox from using wayland idle-inhibit
|
||||
# "org.freedesktop.impl.portal.Inhibit" = "none";
|
||||
# };
|
||||
|
||||
# services.cage.program = "${lib.getExe pkgs.ungoogled-chromium} --kiosk --new-window --noerrdialogs --disable-infobars http://jellyfin.in.redalder.org";
|
||||
|
||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_6;
|
||||
time.timeZone = "Europe/Amsterdam";
|
||||
system.stateVersion = "24.05";
|
||||
});
|
||||
};
|
||||
}
|
94
nixos/systems/saw/disko.nix
Normal file
94
nixos/systems/saw/disko.nix
Normal file
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
boot.initrd.systemd.enable = true;
|
||||
boot.loader.efi = {
|
||||
efiSysMountPoint = "/boot";
|
||||
};
|
||||
boot.loader.grub = {
|
||||
devices = ["nodev"];
|
||||
efiInstallAsRemovable = true;
|
||||
efiSupport = true;
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/persist".neededForBoot = true;
|
||||
"/nix" = lib.mapAttrs (_: lib.mkForce) {
|
||||
fsType = "auto";
|
||||
device = "/persist/nix";
|
||||
options = ["x-initrd.mount" "bind"];
|
||||
neededForBoot = true;
|
||||
};
|
||||
};
|
||||
|
||||
disko.devices = {
|
||||
nodev."/tmp" = {
|
||||
fsType = "tmpfs";
|
||||
mountOptions = [
|
||||
"size=256M"
|
||||
"mode=755"
|
||||
"noexec"
|
||||
];
|
||||
};
|
||||
|
||||
nodev."/" = {
|
||||
fsType = "tmpfs";
|
||||
mountOptions = [
|
||||
"size=128M"
|
||||
"mode=755"
|
||||
"noexec"
|
||||
];
|
||||
};
|
||||
|
||||
nodev."/nix" = {
|
||||
fsType = "ext4";
|
||||
device = "/dev/disk/by-id/ata-SK_hynix_SC311_SATA_128GB_MJ88N52701150940J-part3";
|
||||
mountOptions = [
|
||||
"X-mount.subdir=nix"
|
||||
];
|
||||
preMountHook = ''
|
||||
tmpdir=$(mktemp -d)
|
||||
|
||||
mount /dev/disk/by-id/ata-SK_hynix_SC311_SATA_128GB_MJ88N52701150940J-part3 $tmpdir
|
||||
mkdir $tmpdir/nix
|
||||
umount $tmpdir
|
||||
'';
|
||||
};
|
||||
|
||||
disk.ssd = {
|
||||
device = "/dev/disk/by-id/ata-SK_hynix_SC311_SATA_128GB_MJ88N52701150940J";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
type = "EF00";
|
||||
size = "2048M";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = ["umask=0077"];
|
||||
};
|
||||
};
|
||||
|
||||
swap = {
|
||||
size = "8192M";
|
||||
content.type = "swap";
|
||||
};
|
||||
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/persist";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
nixos/systems/saw/nixpkgs.nix
Normal file
10
nixos/systems/saw/nixpkgs.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
inputs',
|
||||
config',
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../common/nixpkgs.nix
|
||||
];
|
||||
}
|
24
nixos/systems/saw/users.nix
Normal file
24
nixos/systems/saw/users.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
inputs',
|
||||
config',
|
||||
secret,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs'.home-manager-stable.nixosModules.default
|
||||
../../common/users.nix
|
||||
];
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.extraSpecialArgs = {
|
||||
config' = config';
|
||||
inputs' = inputs';
|
||||
secret = secret;
|
||||
};
|
||||
home-manager.users.main = {
|
||||
imports = [(inputs'.self + "/home-manager/modules/profiles/server.nix")];
|
||||
|
||||
home.stateVersion = "24.05";
|
||||
};
|
||||
}
|
13
patches/squeekboard-layer-overlay.patch
Normal file
13
patches/squeekboard-layer-overlay.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/src/panel.c b/src/panel.c
|
||||
index a9942c8..63ade5c 100644
|
||||
--- a/src/panel.c
|
||||
+++ b/src/panel.c
|
||||
@@ -79,7 +79,7 @@ panel_manager_request_widget (struct panel_manager *self, struct wl_output *outp
|
||||
"anchor", ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM
|
||||
| ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT
|
||||
| ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT,
|
||||
- "layer", ZWLR_LAYER_SHELL_V1_LAYER_TOP,
|
||||
+ "layer", ZWLR_LAYER_SHELL_V1_LAYER_OVER,
|
||||
"kbd-interactivity", FALSE,
|
||||
"exclusive-zone", height,
|
||||
"namespace", "osk",
|
Loading…
Reference in a new issue