laksjdalkjsd

This commit is contained in:
2025-11-19 17:58:01 +01:00
parent d911acd86e
commit a59eaa29ac
15 changed files with 196 additions and 49 deletions

View File

@@ -22,6 +22,9 @@ let
home-manager.useGlobalPkgs = true; # go brrr, reuse overrides
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.sharedModules = [
({lib, ...}: {
nixpkgs = lib.mkForce {}; # ignored when home-manager.useGlobalPkgs
})
inputs.sops-nix.homeManagerModules.sops
(
inputs.nix-index-database.homeModules.nix-index

View File

@@ -53,6 +53,7 @@
../../../profiles/desktop/steam.nix
../../../profiles/desktop/retroarch.nix
../../../profiles/desktop/flatpak.nix
# ../../../profiles/desktop/waydroid.nix
../../../profiles/known-hosts
#../../../profiles/domeneshop-dyndns.nix # handled by noximilien

View File

@@ -108,22 +108,39 @@ push $hostname=`just _a_host` cmd=`gum choose test switch boot --header "Select
set -x; NIX_NO_NOM=1 nixos-rebuild {{cmd}} --flake .#"$hostname" --target-host "root@$target_host" --use-substitutes
fi
home-build *_:
home-eval:
#!/usr/bin/env -S bash -euo pipefail
# home-manager build --flake .#nixosConfigurations.$(hostname).config.home-manager.users.$(whoami)
nix build .#nixosConfigurations."$(hostname)".config.home-manager.users."$(whoami)".home.activationPackage "${@:1}"
hostname="$(hostname)"
username="$(whoami)"
set -x
nix eval --log-format raw .#nixosConfigurations."${hostname}".config.home-manager.users."${username}".home.activationPackage
# TODO: fallback to .#homeConfigurations.$(whoami) ?
# TODO: alternative behaviour for system-manager and nix-darwin
home-build-diff: home-build
home-build *_:
#!/usr/bin/env -S bash -euo pipefail
# nvd diff /home/pbsds/.local/state/home-manager/gcroots/current-home result # python based, slow
dix /home/pbsds/.local/state/home-manager/gcroots/current-home result # rust based, fast, nixos-unstable only
hostname="$(hostname)"
username="$(whoami)"
set -x
nom build .#nixosConfigurations."${hostname}".config.home-manager.users."${username}".home.activationPackage "${@:1}"
# TODO: fallback to .#homeConfigurations.$(whoami) ?
# TODO: alternative behaviour for system-manager and nix-darwin
home-build-diff *_: home-build
#!/usr/bin/env -S bash -euo pipefail
current_home="${XDG_STATE_HOME:-"$HOME/.local/state"}/home-manager/gcroots/current-home"
new_home="$(just home-build --print-out-paths "${@:1}")"
set -x
# nvd diff "$current_home" "$new_home" # python based, slow
dix "$current_home" "$new_home" # rust based, fast, nixos-unstable only
home-switch *_:
#!/usr/bin/env -S bash -euo pipefail
# home-manager switch --flake .#nixosConfigurations.$(hostname).config.home-manager.users.$(whoami)
nix run .#nixosConfigurations."$(hostname)".config.home-manager.users."$(whoami)".home.activationPackage "${@:1}"
new_home="$(just home-build --print-out-paths "${@:1}")"
set -x
# ./result/activate
"$new_home"/activate
# test-files $hostname=`just _a_host` *filenames:
# #!/usr/bin/env -S bash -euo pipefail

View File

@@ -84,8 +84,10 @@
#networking.networkmanager.wifi.backend = "iwd"; # default is wpa_supplicant, iwd doesn't support eduroam
networking.firewall.logRefusedConnections = false; # too spammy, rotates dmesg too quickly
# nixos-rebuild switch --specialisation no-firewall
specialisation.no-firewall.configuration = {
networking.firewall.enable = false;
services.fail2ban.enable = false; # requires firewall
};
security.sudo.execWheelOnly = true;

View File

@@ -1,10 +1,20 @@
{ pkgs, ... }:
{ config, pkgs, ... }:
{
/* programs.firefox.enable = true; */
# invasive as fuck
# https://github.com/NixOS/nixpkgs/blob/89c2b2330e733d6cdb5eae7b899326930c2c0648/nixos/modules/programs/firefox.nix#L13-L20
# programs.firefox.enable = true;
environment.systemPackages = with pkgs; [
gparted
environment.systemPackages = [
# instead of programs.firefox.enable
(if !config.services.gnome.gnome-browser-connector.enable
then pkgs.firefox
else pkgs.firefox.override {
nativeMessagingHosts = [ pkgs.gnome-browser-connector ];
}
)
pkgs.gparted
];
# used by gparted?

View File

@@ -1,55 +1,84 @@
{ config, pkgs, ... }:
{
{ config, lib, pkgs, ... }:
lib.mkMerge [
/*
https://wiki.nixos.org/wiki/GNOME
*/
(lib.optionalAttrs (lib.versionOlder lib.version "25.11") {
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.displayManager.gdm.wayland = true;
services.xserver.desktopManager.gnome.enable = true;
})
(lib.optionalAttrs (lib.versionAtLeast lib.version "25.11") {
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
})
{
# services.xserver.enable = true;
# services.xserver.displayManager.gdm.enable = true;
# services.xserver.displayManager.gdm.wayland = true;
# services.xserver.desktopManager.gnome.enable = true;
#services.printing.enable = true; # CUPS, done in printing.nix
programs.xwayland.enable = true;
xdg.portal.enable = true;
qt.enable = true;
qt.platformTheme = "gnome";
qt.style = "adwaita-dark";
# support GConf-based applications
# services.dbus.packages = [ pkgs.gnome2.GConf ];
# Enable system tray icons (will also require the appindicator gnome-extension)
# environment.systemPackages = [ pkgs.gnomeExtensions.appindicator ];
services.udev.packages = [
(pkgs.gnome-settings-daemon or pkgs.gnome.gnome-settings-daemon)
];
# programs.dconf.profiles.user.databases = [
# {
# settings."org/gnome/mutter".experimental-features = [
# # "scale-monitor-framebuffer" # Enables fractional scaling (125% 150% 175%)
# # "variable-refresh-rate" # Enables Variable Refresh Rate (VRR) on compatible displays
# # "xwayland-native-scaling" # Scales Xwayland applications to look crisp on HiDPI screens
# ];
# }
# ];
programs.gnome-terminal.enable = false;
services.tumbler.enable = true; # TODO: needed when we have ffmpegthumbnailer?
services.gnome.sushi.enable = true;
services.gnome.gnome-online-accounts.enable = true;
services.gnome.sushi.enable = true; # quick previewer for nautilus
# services.gnome.gnome-online-accounts.enable = true; # Gnome SSO service
# for managing gnome extensions with firefox, assumes programs.firefox.enable
services.gnome.gnome-browser-connector.enable = true;
/* programs.firefox.enable = true; # spooky? */
#nixpkgs.overlays = [(final: prev: {
# firefox = prev.firefox.override {
# # Gnome shell native connector
# cfg.enableGnomeExtensions = true;
# # ^ should also be enabled by `programs.firefox.enable` +
# # `programs.firefox.enableGnomeExtensions` in hm, but it is kinda spooky
# };
#})];
nixpkgs.config.firefox.enableGnomeExtensions = true;
environment.systemPackages = with pkgs; [
firefox
pavucontrol
lxterminal # TODO: remove?
ghostty
environment.systemPackages = [
pkgs.pavucontrol
pkgs.lxterminal # TODO: remove?
pkgs.ghostty
(pkgs.gnome-tweaks or pkgs.gnome.gnome-tweaks)
pkgs.refine # Tweak various aspects of GNOME
# TODO: shadow gnome-terminal
ffmpegthumbnailer
libheif # HEIF thumbnails
gnomeExtensions.appindicator
pkgs.ffmpegthumbnailer
pkgs.libheif # HEIF thumbnails
pkgs.gnomeExtensions.appindicator
decibels
dconf-editor
pkgs.decibels
pkgs.dconf-editor
loupe
gnome-clocks
shotwell # image editor
pkgs.loupe
pkgs.gnome-clocks
pkgs.shotwell # image editor
desktop-file-utils # update-desktop-database
pkgs.desktop-file-utils # update-desktop-database
];
# an attempt to make nautilus discover new files, but it proved to be a freebsd-linux incompatiblity
@@ -85,3 +114,5 @@
(pkgs.atomix or pkgs.gnome.atomix) # puzzle game
];
}
]

View File

@@ -1,3 +1,59 @@
{ pkgs, ... }:
/*
= setup: =
$ sudo waydroid init
$ sudo waydroid init -S GAPPS -f
$ sudo systemctl start waydroid-container
$ sudo journalctl -u waydroid-container -e
$ waydroid session start
= maintanance: =
$ sudo waydroid upgrade
= wipe: =
$ sudo systemctl stop waydroid-container
$ sudo rm -r /var/lib/waydroid/* ~/.local/share/waydroid
*/
{
virtualisation.waydroid.enable = true;
# https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/virtualisation/waydroid.nix
virtualisation.waydroid.enable = true; # will enable virtualisation.lxc.enable
environment.systemPackages = [ pkgs.wl-clipboard-timeout ];
# environment.systemPackages = [ (pkgs.wl-clipboard-timeout or pkgs.wl-clipboard) ];
# https://wiki.nixos.org/wiki/Waydroid
/** /
# waydroid-helper GUI:
environment.systemPackages = [ pkgs.waydroid-helper ];
systemd.packages = [ pkgs.waydroid-helper ];
systemd.services.waydroid-mount.wantedBy = [ "multi-user.target" ];
# required at runtime:
# $ systemctl --user start waydroid-monitor
# TODO: one of
# systemd.user.targets.multi-user.wants = [ "multi-user.target" ];
# systemd.user.services.waydroid-monitor.wantedBy = [ "waydroid-monitor.service" ];
/**/
# https://github.com/SCLorentz/NixOS-config/blob/abf4eefd8d8797878b3620faedfcdb3db696e7aa/modules/android.nix
systemd.services."waydroid-set-props" = {
wantedBy = [ "multi-user.target" ];
after = [ "waydroid-container.service" ];
serviceConfig = {
Type = "oneshot";
# https://docs.waydro.id/usage/waydroid-prop-options
ExecStart = pkgs.writeShellScript "set-waydroid-props" ''
${pkgs.waydroid}/bin/waydroid prop set persist.waydroid.multi_windows true
# ${pkgs.waydroid}/bin/waydroid prop set persist.waydroid.reverse_scrolling true
${pkgs.waydroid}/bin/waydroid prop set persist.sys.nativebridge 1
${pkgs.waydroid}/bin/waydroid prop set ro.hardware ranchu
'';
};
};
}

View File

@@ -101,11 +101,15 @@
* [ ] [gpg](https://github.com/jakehamilton/config/blob/579827c699d9c78bd42e73f543eafb05a0d6c374/modules/security/gpg/default.nix)
* [ ] [keyring](https://github.com/jakehamilton/config/blob/579827c699d9c78bd42e73f543eafb05a0d6c374/modules/security/keyring/default.nix)
# home/pbsds
* [ ] kdf-connect?
* https://github.com/GSConnect/gnome-shell-extension-gsconnect
* https://userbase.kde.org/KDEConnect
* [ ] wrap windowmanager in nixGL on non-nixos https://github.com/dali99/nix-dotfiles/blob/85dcafb4e0b8382a3d04b9a5f63afd01a4144143/profiles/xsession/default.nix#LL138C1-L138C1
* [ ] requires GNOME xstart in home-manager
* [ ] https://github.com/dali99/nix-dotfiles/blob/85dcafb4e0b8382a3d04b9a5f63afd01a4144143/machines/pvv-terminal.nix#L3
* [ ] users/pbsds: Support multiple profiles, like headless, nixpkgs-dev, various desktops, hpc, pvv, etc
* [x] lxterminal
* [x] ghostty
* [ ] replace gnome terminal
* [x] themes
* [x] shortcuts

View File

@@ -21,6 +21,9 @@
programs.bash.shellAliases."ed" = "\${EDITOR:-micro}";
environment.variables."EDITOR" = "micro";
# autologin:
# services.displayManager.autoLogin.enable = true;
# services.displayManager.autoLogin.user = "pbsds";
# user and home-manager

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env bash
if command -v adb >/dev/null; then
# problem:
adb-tailscale-connect() {
if ! command -v adb >/dev/null; then
@@ -42,3 +44,5 @@ adb-tailscale-connect() {
fi
)
}
fi

View File

@@ -65,7 +65,7 @@
vlc
f3d
firefox
# firefox # we assume the host has this
zotero
(pkgs.loupe or pkgs.gnome.eog)
papers
@@ -84,7 +84,9 @@
zoom-us
];
/* programs.firefox.enable = true; */
# programs.firefox.enable = true; # likely also very invasive, we assume the host has firefox
home.sessionVariables.MOZ_ENABLE_WAYLAND = "1";
home.sessionVariables.MOZ_USE_XINPUT2 = "1"; # smooth scrolling
home.shellAliases.eog = lib.mkIf (pkgs?loupe) "loupe";

View File

@@ -4,9 +4,10 @@
home.file.".config/ghostty/config".source = ./ghosty.config;
home.file.".config/ghostty/config".force = true;
dconf.settings."org/gnome/desktop/default-applications/terminal" = {
/* exec = lib.getExe pkgs.ghostty; */
# dconf.settings."org/gnome/desktop/default-applications/terminal" = {
dconf.settings."org/gnome/desktop/default/applications/terminal" = {
# exec = lib.getExe pkgs.ghostty;
exec = "ghostty";
exec-arg = "-e";
# exec-arg = "-e";
};
}

View File

@@ -97,19 +97,30 @@ let
wine-ini = "application/x-wine-extension-ini";
ics = "text/calendar";
};
vtty = {
x-terminal-emulator-1 = "application/x-terminal-emulator";
x-terminal-emulator-2 = "x-terminal-emulator";
x-terminal-emulator-3 = "x-scheme-handler/terminal";
};
};
# Applications
app-map = {
# ls ~/.nix-profile/share/applications/
# ls ~/.local/share/applications/
# ls /run/current-system/sw/share/applications/
# ls /usr/share/applications/
image = ["org.gnome.Loupe.desktop" "org.gnome.eog.desktop"];
audio = ["mpv.desktop" "vlc.desktop" "ZXTune.desktop"];
video = ["mpv.desktop"];
video = ["mpv.desktop" "vlc.desktop"];
fonts = ["org.gnome.font-viewer.desktop"];
docs = ["org.gnome.Papers.desktop" "org.gnome.Evince.desktop"];
web = ["firefox.desktop"];
/* code = ["Pulsar.desktop"]; */
/* code = ["micro.desktop"]; */
# code = ["Pulsar.desktop"];
# code = ["micro.desktop"];
code = ["dev.zed.Zed.desktop"];
vtty = ["com.mitchellh.ghostty.desktop" "lxterminal.desktop"];
};
in {
xdg.configFile."mimeapps.list".force = true;

View File

@@ -18,6 +18,7 @@
Service.ExecStart = toString (
# TODO: do I want to clone it if missing? Requires git keys, I should clone on OnActiveSec
pkgs.writers.writeBash "update-zed-config" { } ''
set -euo pipefail
PATH="${lib.makeBinPath [ pkgs.git ]}''${PATH:+":$PATH"}"
if [[ -e "$HOME"/.config/zed/.git ]]; then
cd "$HOME"/.config/zed/

View File

@@ -207,6 +207,7 @@ in
wget
wakeonlan
android-tools # adb
#tldr
stress # brrr