feat: add a lot of stuff

This commit is contained in:
Jacob Bachmann 2023-10-07 19:10:14 +02:00
parent 350aebc01d
commit 5505eec77d
Signed by: bchmnn
GPG key ID: 732A612DAD28067D
28 changed files with 224 additions and 97 deletions

View file

@ -25,6 +25,7 @@
./modules ./modules
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
imports = [ ./users/gandalf ]; imports = [ ./users/gandalf ];
} }

View file

@ -15,5 +15,4 @@
nec = "sudo -E nvim -u $HOME/.config/nvim/init.lua --cmd 'cd /etc/nixos'"; nec = "sudo -E nvim -u $HOME/.config/nvim/init.lua --cmd 'cd /etc/nixos'";
ncc = "sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos"; ncc = "sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos";
nup = "sudo nix-channel --update && sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos"; nup = "sudo nix-channel --update && sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos";
spt = "spotify_player";
} }

View file

@ -6,4 +6,3 @@
services.blueman.enable = true; services.blueman.enable = true;
} }

View file

@ -13,11 +13,12 @@
./opengl.nix ./opengl.nix
./power.nix ./power.nix
./packages.nix ./packages.nix
./print.nix ./printing.nix
./security.nix ./security.nix
./shell.nix ./shell.nix
./udisks2.nix ./udisks2.nix
./unfree.nix ./unfree.nix
./virtualisation.nix
./xdg-portal.nix ./xdg-portal.nix
]; ];
} }

View file

@ -1,5 +1,7 @@
{ ... }: { { config, ... }: {
/*
# services.xserver.videoDrivers = [ "nouveau" ];
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = { hardware.nvidia = {
@ -10,6 +12,7 @@
open = false; open = false;
# Enable the nvidia settings menu # Enable the nvidia settings menu
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.legacy_390;
}; };
*/
} }

View file

@ -1,6 +1,7 @@
{ pkgs, ... }: { { pkgs, ... }: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pciutils pciutils
qt5.qtwayland
qt6.qtwayland qt6.qtwayland
xdg-utils # for opening default programs xdg-utils # for opening default programs
glib # gsettings glib # gsettings
@ -20,6 +21,6 @@
javaPackages.openjfx17 javaPackages.openjfx17
gradle_7 gradle_7
python312 python312
nodejs_20 nodenv
]; ];
} }

View file

@ -1,4 +0,0 @@
{ ... }: {
# Enable CUPS to print documents.
services.printing.enable = true;
}

11
modules/printing.nix Normal file
View file

@ -0,0 +1,11 @@
{ ... }: {
# Enable CUPS to print documents.
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns = true;
openFirewall = true;
};
}

View file

@ -3,4 +3,9 @@
# rtkit is optional but recommended # rtkit is optional but recommended
security.rtkit.enable = true; security.rtkit.enable = true;
# TODO workaround to get swaylock accepting pw
# https://github.com/NixOS/nixpkgs/issues/158025
security.pam.services.swaylock = {};
} }

View file

@ -0,0 +1,8 @@
{ pkgs, ... }: {
# virt-manager
virtualisation.libvirtd.enable = true;
programs.dconf.enable = true;
environment.systemPackages = with pkgs; [ virt-manager ];
}

View file

@ -1,19 +1,11 @@
{ pkgs, unstable, ... }: { unstable, ... }:
let let
aliases = import ../../modules/aliases.nix; aliases = import ../../modules/aliases.nix;
in in
{ {
users.users.gandalf = { users.users.gandalf = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ]; extraGroups = [ "wheel" "networkmanager" "libvirtd" ];
packages = with pkgs; [
firefox
speechd # https://support.mozilla.org/en-US/kb/speechd-setup
gopass
gopass-jsonapi
gnome.nautilus
gimp
];
}; };
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;

View file

@ -21,4 +21,3 @@ in
}; };
}; };
} }

View file

@ -0,0 +1,73 @@
{ config, pkgs, lib, ... }:
let
icons = {
chromium = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Chromium_Logo.svg/240px-Chromium_Logo.svg.png";
sha256 = "ff6383a5c08745100e1f8720397c3d6e1b30bc6d4a329cf44bbac16ec03948e7";
meta.licenses = lib.licenses.publicDomain;
};
spotify = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Spotify_icon.svg/232px-Spotify_icon.svg.png";
sha256 = "0568b108bf4533e7382e0f3526e211308868d2d2aa35ab8f0cc7beb464e70d5f";
meta.licenses = lib.licenses.publicDomain;
};
teams = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Microsoft_Office_Teams_%282018%E2%80%93present%29.svg/258px-Microsoft_Office_Teams_%282018%E2%80%93present%29.svg.png";
sha256 = "a7bf37b6132e45c3c3314e7ed3a465138caabe3d87535a8b82a84be6a5f70dac";
meta.licenses = lib.licenses.publicDomain;
};
outlook = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Microsoft_Office_Outlook_%282018%E2%80%93present%29.svg/258px-Microsoft_Office_Outlook_%282018%E2%80%93present%29.svg.png";
sha256 = "565fff2ed6a3c4c98daf7a2b56aad386c2d076f4f5b88199785593eb380eb3d4";
meta.licenses = lib.licenses.publicDomain;
};
};
in
{
programs.chromium = {
enable = true;
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium
];
};
xdg.dataFile = {
"applications/chromium-development.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Chromium (Development Modus)
Exec=${pkgs.chromium}/bin/chromium --allow-file-access-from-files --disable-site-isolation-trials --allow-running-insecure-content --no-referrers --unlimited-storage --user-data-dir=${config.xdg.dataHome}/chromium-development/data --disable-web-security
Terminal=false
Icon=${icons.chromium}
'';
"applications/spotify.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Spotify
Exec=${pkgs.chromium}/bin/chromium --app=https://spotify.com
Terminal=false
Icon=${icons.spotify}
'';
"applications/teams.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Microsoft Teams
Exec=${pkgs.chromium}/bin/chromium --app=https://teams.microsoft.com
Terminal=false
Icon=${icons.teams}
'';
"applications/outlook.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Microsoft Outlook
Exec=${pkgs.chromium}/bin/chromium --app=https://outlook.office365.com/mail
Terminal=false
Icon=${icons.outlook}
'';
};
}

View file

@ -7,6 +7,7 @@
# https://yeun.github.io/open-color/ # https://yeun.github.io/open-color/
active = "#ffdeeb"; # pink1 active = "#ffdeeb"; # pink1
activeDark = "#f783ac"; # pink4 activeDark = "#f783ac"; # pink4
_activeDark = "f783ac"; # pink4
inactive = "#495057"; # gray7 inactive = "#495057"; # gray7
inactiveDark = "#212529"; # gray9 inactiveDark = "#212529"; # gray9
alert = "#c92a2a"; # red9 alert = "#c92a2a"; # red9

View file

@ -0,0 +1,10 @@
{ ... }: {
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
}

View file

@ -1,15 +1,18 @@
{ {
imports = [ imports = [
./alacritty.nix ./alacritty.nix
./chromium.nix
./dconf.nix
./fzf.nix ./fzf.nix
./git.nix ./git.nix
./gnupg.nix ./gnupg.nix
./kanshi.nix
./keyring.nix ./keyring.nix
./neovim.nix ./neovim.nix
./obs.nix ./obs.nix
./packages.nix ./packages.nix
./playerctl.nix ./playerctl.nix
./spotify-player ./spotify
./ssh.nix ./ssh.nix
./sway.nix ./sway.nix
./swaync ./swaync

View file

@ -0,0 +1,14 @@
{ pkgs , cmake , qttools , qtsvg , kguiaddons , wrapQtAppsHook }:
# https://ryantm.github.io/nixpkgs/using/overrides/
pkgs.flameshot.overrideAttrs (finalAttrs: previousAttrs: {
pname = previousAttrs.pname + "-wl";
nativeBuildInputs = [ cmake qttools qtsvg kguiaddons wrapQtAppsHook ];
cmakeFlags = [
"-DUSE_WAYLAND_CLIPBOARD=1"
"-DUSE_WAYLAND_GRIM=1"
];
})

View file

@ -0,0 +1 @@
import ./flameshot.nix

View file

@ -0,0 +1,5 @@
{ pkgs, ... }:
# https://nixos.wiki/wiki/Qt
# https://nixos.org/manual/nixpkgs/stable/#sec-language-qt
pkgs.libsForQt5.callPackage ./build.nix { }

View file

@ -0,0 +1,33 @@
{ ... }: {
services.kanshi = {
enable = true;
profiles = {
home = {
outputs = [
{
criteria = "DP-3";
mode = "1920x1080";
position = "0,0";
}
{
criteria = "DP-2";
mode = "1920x1080";
position = "1920,0";
}
{
criteria = "LVDS-1";
mode = "1920x1080";
position = "3840,0";
scale = 1.33;
}
];
};
};
};
}

View file

@ -76,9 +76,9 @@
indent = { indent = {
enable = true enable = true
}, },
highlight = { -- highlight = {
enable = true -- enable = true
}, -- },
} }
-- nvim-lspconfig -- nvim-lspconfig

View file

@ -1,7 +1,14 @@
{ pkgs, ... }: { { pkgs, ... }: {
home.packages = with pkgs; [ home.packages = with pkgs; [
firefox
speechd # https://support.mozilla.org/en-US/kb/speechd-setup
gopass
gopass-jsonapi
gnome.nautilus
gimp
vlc vlc
gnome.simple-scan
]; ];
} }

View file

@ -4,10 +4,4 @@
playerctl playerctl
]; ];
/*
services.playerctld = {
enable = true;
};
*/
} }

View file

@ -1,47 +0,0 @@
theme = "dracula"
client_id = "65b708073fc0480ea92a077233ca87bd"
client_port = 8080
playback_format = """
{track} {artists}
{album}
{metadata}"""
tracks_playback_limit = 50
app_refresh_duration_in_ms = 32
playback_refresh_duration_in_ms = 0
cover_image_refresh_duration_in_ms = 2000
page_size_in_rows = 20
track_table_item_max_len = 32
play_icon = "▶"
pause_icon = "▌▌"
liked_icon = "♥"
border_type = "Plain"
progress_bar_type = "Rectangle"
playback_window_position = "Top"
cover_img_length = 9
cover_img_width = 5
cover_img_scale = 1.0
playback_window_width = 6
enable_media_control = true
enable_streaming = true
enable_cover_image_cache = true
default_device = "spotify-player"
[copy_command]
command = "xclip"
args = [
"-sel",
"c",
]
[notify_format]
summary = "{track} • {artists}"
body = "{album}"
[device]
name = "spotify-player"
device_type = "speaker"
volume = 80
bitrate = 320
audio_cache = false
# test

View file

@ -1,5 +0,0 @@
{
imports = [
./spotify-player.nix
];
}

View file

@ -1,9 +0,0 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
spotify-player
];
xdg.configFile."spotify-player/app.toml".source = ./app.toml;
}

View file

@ -1,14 +1,20 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
cfg = config.wayland.windowManager.sway.config; cfg = config.wayland.windowManager.sway.config;
common = import ./common.nix; common = import ./common.nix;
wallpaper = pkgs.fetchurl { wallpaper = pkgs.fetchurl {
url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png"; url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png";
sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308"; sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308";
meta.licenses = lib.licenses.cc0; meta.licenses = lib.licenses.cc0;
}; };
# flameshot = pkgs.libsForQt5.callPackage ./flameshot/build.nix { };
in in
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
brightnessctl # control screen brightness brightnessctl # control screen brightness
pavucontrol # control audio pavucontrol # control audio
@ -16,13 +22,17 @@ in
networkmanagerapplet # control network networkmanagerapplet # control network
dracula-theme # gtk theme dracula-theme # gtk theme
gnome3.adwaita-icon-theme # default gnome cursors gnome3.adwaita-icon-theme # default gnome cursors
# wdisplays # graphical output manager
# wev # wayland event monitor
wl-clipboard # cli tool to manage wayland clipboard wl-clipboard # cli tool to manage wayland clipboard
# wl-mirror # emulation for “mirror display” mode sway-contrib.grimshot
# wlr-randr # output management that actually works wdisplays
wlr-randr
]; ];
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
};
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = true; enable = true;
wrapperFeatures = { wrapperFeatures = {
@ -44,6 +54,7 @@ in
export SDL_VIDEODRIVER=wayland export SDL_VIDEODRIVER=wayland
# QT (needs qt5.qtwayland in systemPackages): # QT (needs qt5.qtwayland in systemPackages):
export QT_QPA_PLATFORM=wayland-egl export QT_QPA_PLATFORM=wayland-egl
# export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
# Fix for some Java AWT applications (e.g. Android Studio), # Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly: # use this if they aren't displayed properly:
@ -81,7 +92,10 @@ in
down = "j"; down = "j";
up = "k"; up = "k";
right = "l"; right = "l";
keybindings = { keybindings = {
"${cfg.modifier}+Ctrl+Shift+l" = "exec ${pkgs.swaylock-effects}/bin/swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 --ring-color ffffff --key-hl-color ${common.colorschemes.default._activeDark} --line-color 00000000 --inside-color 00000088 --inside-ver-color ${common.colorschemes.default._activeDark} --separator-color 00000000 --text-color ${common.colorschemes.default._activeDark} --fade-in 0.1";
# Basics # Basics
"${cfg.modifier}+Return" = "exec ${cfg.terminal}"; "${cfg.modifier}+Return" = "exec ${cfg.terminal}";
"${cfg.modifier}+q" = "kill"; "${cfg.modifier}+q" = "kill";
@ -175,6 +189,9 @@ in
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; "XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
# Screenshot
"Print" = "exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
# Programs # Programs
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol"; "${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager"; "${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
@ -287,5 +304,6 @@ in
# ^-- resize again, case moving to different output # ^-- resize again, case moving to different output
''; '';
}; };
} }

View file

@ -59,6 +59,20 @@ in
"**/__pycache__" = true; "**/__pycache__" = true;
}; };
"vim.normalModeKeyBindingsNonRecursive" = [
{
"before" = [ "<C-p>" ];
"commands" = [ "workbench.action.quickOpen" ];
}
{
"before" = [ "<C-b>" ];
"commands" = [
"workbench.view.explorer"
"workbench.action.toggleSidebarVisibility"
];
}
];
"[html]" = { "[html]" = {
"editor.tabSize" = 2; "editor.tabSize" = 2;
"editor.insertSpaces" = true; "editor.insertSpaces" = true;