From afa8c3fba5ace65bee7a02024a136986341ad129 Mon Sep 17 00:00:00 2001 From: Jakub Trzeciak Date: Tue, 12 Sep 2023 09:09:24 +0200 Subject: Init --- home-manager/.Xresources | 42 ++++++++++ home-manager/.flake.lock | 49 ++++++++++++ home-manager/.flake.nix | 29 +++++++ home-manager/firefox.nix | 88 ++++++++++++++++++++ home-manager/home.nix | 177 +++++++++++++++++++++++++++++++++++++++++ home-manager/sh/colors.nix | 18 +++++ home-manager/sh/dmenu.nix | 15 ++++ home-manager/sh/dwmblocks.nix | 12 +++ home-manager/sh/mpv.nix | 15 ++++ home-manager/sh/screenshot.nix | 11 +++ home-manager/sh/wp.nix | 31 ++++++++ home-manager/sh/yt.nix | 67 ++++++++++++++++ home-manager/sxrc | 22 +++++ 13 files changed, 576 insertions(+) create mode 100644 home-manager/.Xresources create mode 100644 home-manager/.flake.lock create mode 100644 home-manager/.flake.nix create mode 100644 home-manager/firefox.nix create mode 100644 home-manager/home.nix create mode 100644 home-manager/sh/colors.nix create mode 100644 home-manager/sh/dmenu.nix create mode 100644 home-manager/sh/dwmblocks.nix create mode 100644 home-manager/sh/mpv.nix create mode 100644 home-manager/sh/screenshot.nix create mode 100644 home-manager/sh/wp.nix create mode 100644 home-manager/sh/yt.nix create mode 100755 home-manager/sxrc (limited to 'home-manager') diff --git a/home-manager/.Xresources b/home-manager/.Xresources new file mode 100644 index 0000000..9bc01b0 --- /dev/null +++ b/home-manager/.Xresources @@ -0,0 +1,42 @@ +*.window.background: #181921 +*.window.foreground: #ba5ac9 +*.bar.background: #ba5ac9 +*.bar.foreground: #eceadd +*.mark.foreground: #eceadd + +! special +*.foreground: #eceadd +*.background: #181921 +*.cursorColor: #eceadd + +! black +*.color0: #090618 +*.color8: #413e53 + +! red +*.color1: #e32929 +*.color9: #d94545 + +! green +*.color2: #bdcc27 +*.color10: #bac455 + +! yellow +*.color3: #ff920d +*.color11: #e59e46 + +! blue +*.color4: #1984db +*.color12: #5a9dd4 + +! magenta +*.color5: #af18db +*.color13: #ba5ac9 + +! cyan +*.color6: #55c8b9 +*.color14: #61b5aa + +! white +*.color7: #9ca7b2 +*.color15: #f1f1f1 diff --git a/home-manager/.flake.lock b/home-manager/.flake.lock new file mode 100644 index 0000000..994aa6a --- /dev/null +++ b/home-manager/.flake.lock @@ -0,0 +1,49 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1687871164, + "narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-23.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1690921052, + "narHash": "sha256-PHCyqQXj9thb3pGHV2O20eVwczkE+krG/XFumN0tJAs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "dff08e260fdac77326bafe3a324c2ffbff95d49a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home-manager/.flake.nix b/home-manager/.flake.nix new file mode 100644 index 0000000..b3ad2fa --- /dev/null +++ b/home-manager/.flake.nix @@ -0,0 +1,29 @@ +{ + description = "Home Manager configuration of jp3"; + + inputs = { + # Specify the source of Home Manager and Nixpkgs. + nixpkgs.url = "github:nixos/nixpkgs/release-23.05"; + home-manager = { + url = "github:nix-community/home-manager/release-23.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { nixpkgs, home-manager, ... }: + let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + homeConfigurations."jp3" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + # Specify your home configuration modules here, for example, + # the path to your home.nix. + modules = [ ./home.nix ]; + + # Optionally use extraSpecialArgs + # to pass through arguments to home.nix + }; + }; +} diff --git a/home-manager/firefox.nix b/home-manager/firefox.nix new file mode 100644 index 0000000..820354c --- /dev/null +++ b/home-manager/firefox.nix @@ -0,0 +1,88 @@ +{ config, pkgs, theme, ... }: + +let + firefox-work = pkgs.writeShellScriptBin "firefox-work" ''firefox -p work''; + + # Show all packages - `nix flake show "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"` + default-extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + decentraleyes + clearurls + darkreader + noscript + + # ImageBlock - Blure Images + # ClearlyRead + + # privacy-badger + ]; + + default-settings = { + "browser.search.region" = "US"; + + "app.normandy.first_run" = false; + "toolkit.telemetry.reportingpolicy.firstRun" = false; + "trailhead.firstrun.didSeeAboutWelcome" = true; + + "browser.startup.homepage" = "https://jptrzy.xyz"; + + "browser.compactmode.show" = true; + "browser.uidensity" = 1; + #"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":["ublock0_raymondhill_net-browser-action"],"nav-bar":["back-button","forward-button","stop-reload-button","customizableui-special-spring6","urlbar-container","customizableui-special-spring7","downloads-button","jid1-mnnxcxisbpnsxq_jetpack-browser-action","unified-extensions-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["personal-bookmarks"]},"seen":["save-to-pocket-button","jid1-mnnxcxisbpnsxq_jetpack-browser-action","ublock0_raymondhill_net-browser-action","developer-button"],"dirtyAreaCache":["unified-extensions-area","nav-bar","TabsToolbar","widget-overflow-fixed-list","PersonalToolbar"],"currentVersion":19,"newElementCount":7}''; + + "media.ffmpeg.vaapi.enabled" = true; + #"xpinstall.signatures.required" = false; # TODO - it is a security issue + }; +in { + programs.firefox = { + enable = true; + + package = pkgs.wrapFirefox pkgs.firefox-unwrapped { + # https://github.com/mozilla/policy-templates#enterprisepoliciesenabled + extraPolicies = { + CaptivePortal = false; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFirefoxAccounts = true; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = false; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; + }; + + profiles = { + work = { + isDefault = false; id = 1; + name = "work"; + + extensions = default-extensions; + settings = default-settings; + }; + + default = { + isDefault = true; id = 0; + name = "main"; + + extensions = default-extensions; + settings = default-settings; + }; + }; + }; + + home.packages = [ + firefox-work + ]; +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..35678e2 --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,177 @@ +{ user, config, pkgs, lib, ... }: + +let + nvim-spell-pl-utf8-dict = builtins.fetchurl { + url = "http://ftp.vim.org/vim/runtime/spell/pl.utf-8.spl"; + sha256 = "1sg7hnjkvhilvh0sidjw5ciih0vdia9vas8vfrd9vxnk9ij51khl"; + }; +in { + home.username = "${user}"; + home.homeDirectory = "/home/${user}"; + + home.stateVersion = "22.05"; # Please read the comment before changing. + + # Allow Specific Unfree Packages + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + # Add additional package names here + "pureref" + "hplip" + ]; + + home.packages = [ + pkgs.picom + pkgs.libnotify + + pkgs.pureref + pkgs.hplipWithPlugin + + (import ./sh/screenshot.nix {inherit pkgs; }) + (import ./sh/wp.nix {inherit pkgs; }) + (import ./sh/colors.nix {inherit pkgs; }) + (import ./sh/yt.nix {inherit pkgs; }) + (import ./sh/mpv.nix {inherit pkgs; }) + ]; + + nixpkgs.config.packageOverrides = pkgs: { + nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { + inherit pkgs; + }; + }; + + home.file = { + ".config/nvim/spell/pl.utf-8.spl".source = nvim-spell-pl-utf8-dict; + + ".config/sx/sxrc".source = ./sxrc; + ".config/Xresources".source = ./.Xresources; + + ".config/alacritty/alacritty.yml".text = '' + font: + normal: + family: Neo Comic Mono + style: Regular + bold: + family: Neo Comic Mono + style: Bold + size: 12 + + colors: + primary: + background: '0x181921' + foreground: '0xeceadd' + normal: + black: '0x090618' + red: '0xe32929' + green: '0xbdcc27' + yellow: '0xff920d' + blue: '0x1984db' + magenta: '0xaf18db' + cyan: '0x55c8b9' + white: '0x9ca7b2' + bright: + black: '0x413e53' + red: '0xd94545' + green: '0xbac455' + yellow: '0xe59e46' + blue: '0x5a9dd4' + magenta: '0xba5ac9' + cyan: '0x61b5aa' + white: '0xf1f1f1' + ''; + + ".local/share/gnupg/gpg-agent.conf".text = '' + debug-pinentry + debug ipc + verbose + enable-ssh-support + # disable-scdaemon + #pinentry-program /run/current-system/sw/bin/pinentry + pinentry-program /run/current-system/sw/bin/pinentry-gtk-2 + ''; + }; + + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + }; + }; + + gtk = { + enable = true; + + font.name = "Neo Comic Mono 12"; + + theme = { + name = "Flat-Remix-GTK-Violet-Dark"; + package = pkgs.flat-remix-gtk; + }; + + iconTheme = { + name = "Flat-Remix-Violet-Dark"; + package = pkgs.flat-remix-icon-theme; + }; + + cursorTheme = { + name = "Adwaita"; + package = pkgs.gnome.adwaita-icon-theme; + }; + }; + + services = { + dunst.enable = true; + }; + + programs = { + bash = { + enable = true; + + shellAliases = { + nr = "sudo nixos-rebuild switch"; + hr = "home-manager switch"; + se = "sudoedit"; + trans = "${pkgs.sdcv}/bin/sdcv --color"; + yta = "yt-dlp -x --audio-format vorbis"; + }; + + sessionVariables = { + EDITOR = "nvim"; + PATH = "$PATH:$HOME/.local/bin"; + + XDG_DATA_HOME = "$HOME/.local/share"; + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_STATE_HOME = "$HOME/.local/state"; + XDG_CACHE_HOME = "$HOME/.cache"; + + HISTFILE = "$HOME/.local/state/bash/history"; + + GNUPGHOME = "$HOME/.local/share/gnupg"; + PASSWORD_STORE_DIR = "$HOME/.local/share/pass"; + + #QT_STYLE_OVERRIDE=adwaita + #QT_QPA_PLATFORMTHEME=gnome + }; + + profileExtra = '' + if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then + exec sx + fi + ''; + }; + + git = { + enable = true; + + userEmail = "jptrzy@gmail.com"; + userName = "Jakub Trzeciak"; + + signing = { + key = "FC040CC63D2527E3"; + signByDefault = true; + }; + }; + }; + + imports = [ ./firefox.nix ]; +} diff --git a/home-manager/sh/colors.nix b/home-manager/sh/colors.nix new file mode 100644 index 0000000..f25a02f --- /dev/null +++ b/home-manager/sh/colors.nix @@ -0,0 +1,18 @@ +{ pkgs }: + +pkgs.writeShellScriptBin "colors" '' + space=" " + + output="" + + for l in $(printf "40\n100"); do + + for i in $(seq $l $((l + 9))); do + output="$output\033[0;''${i}m$space" + done + + output="$output\033[0m\n" + done + + printf "$output" +'' diff --git a/home-manager/sh/dmenu.nix b/home-manager/sh/dmenu.nix new file mode 100644 index 0000000..40c6c77 --- /dev/null +++ b/home-manager/sh/dmenu.nix @@ -0,0 +1,15 @@ +{ pkgs }: + +let + mpv-camera = pkgs.writeShellScriptBin "mpv-camera" '' + ${pkgs.mpv}/bin/mpv /dev/video0 \ + osc=no --input-vo-keyboard=no --player-operation-mode=pseudo-gui \ + no-cache --untimed --no-demuxer-thread \ + --video-sync=audio --vd-lavc-threads=1 --vf=hflip + ''; +in pkgs.symlinkJoin { + name = "mpv"; + paths = [ + mpv-camera + ]; +} diff --git a/home-manager/sh/dwmblocks.nix b/home-manager/sh/dwmblocks.nix new file mode 100644 index 0000000..22db512 --- /dev/null +++ b/home-manager/sh/dwmblocks.nix @@ -0,0 +1,12 @@ +{ pkgs }: + +let + clock = pkgs.writeShellScriptBin "wp" '' + + ''; +in pkgs.symlinkJoin { + name = "simplebar"; + paths = [ + pkgs.dwmblocks + ]; +} diff --git a/home-manager/sh/mpv.nix b/home-manager/sh/mpv.nix new file mode 100644 index 0000000..40c6c77 --- /dev/null +++ b/home-manager/sh/mpv.nix @@ -0,0 +1,15 @@ +{ pkgs }: + +let + mpv-camera = pkgs.writeShellScriptBin "mpv-camera" '' + ${pkgs.mpv}/bin/mpv /dev/video0 \ + osc=no --input-vo-keyboard=no --player-operation-mode=pseudo-gui \ + no-cache --untimed --no-demuxer-thread \ + --video-sync=audio --vd-lavc-threads=1 --vf=hflip + ''; +in pkgs.symlinkJoin { + name = "mpv"; + paths = [ + mpv-camera + ]; +} diff --git a/home-manager/sh/screenshot.nix b/home-manager/sh/screenshot.nix new file mode 100644 index 0000000..9ebf716 --- /dev/null +++ b/home-manager/sh/screenshot.nix @@ -0,0 +1,11 @@ +{ pkgs }: + +pkgs.writeShellScriptBin "screenshot" '' + path="$HOME/Pictures/Screenshot" + mkdir -p "$path" + + path="$path/$(date +%s_%N).jpg" + + slop=$(${pkgs.slop}/bin/slop -f "%g") || exit 1 + ${pkgs.imagemagick}/bin/import -window root -crop "$slop" "$path" +'' diff --git a/home-manager/sh/wp.nix b/home-manager/sh/wp.nix new file mode 100644 index 0000000..37fefb2 --- /dev/null +++ b/home-manager/sh/wp.nix @@ -0,0 +1,31 @@ +{ pkgs }: + +let + wp-set = pkgs.writeShellScriptBin "wp-set" '' + if [ -n "$1" ] && [ -e "$1" ]; then + rm "$HOME/.config/wallpaper."* + + cp "$1" "$HOME/.config/wallpaper.''${1##*.}" + fi + + ${pkgs.xwallpaper}/bin/xwallpaper --zoom "$HOME/.config/wallpaper."* + ''; + + wp-rand = pkgs.writeShellScriptBin "wp-rand" '' + ${wp-set}/bin/wp-set $(ls -1Ad "$HOME/Pictures/Wallpapers/"* | shuf | head -n 1) + ''; + + wp = pkgs.writeShellScriptBin "wp" '' + nsxiv="${pkgs.nsxiv}/bin/nsxiv" + wpset="${wp-set}/bin/wp-set" + + $wpset "$($nsxiv -bfort "$HOME/Pictures/Wallpapers" | sed 1q)" + ''; +in pkgs.symlinkJoin { + name = "wp"; + paths = [ + wp + wp-rand + wp-set + ]; +} diff --git a/home-manager/sh/yt.nix b/home-manager/sh/yt.nix new file mode 100644 index 0000000..836798a --- /dev/null +++ b/home-manager/sh/yt.nix @@ -0,0 +1,67 @@ +{ pkgs }: + +let + + yt = pkgs.writeShellScriptBin "yt" '' + jq="${pkgs.jq}/bin/jq" + + VIDEO_PATH="$HOME/Videos/Random" + + mkdir -p "$VIDEO_PATH" + + json="$(${pkgs.ytfzf}/bin/ytfzf -t --type=video --thumbnail-quality=medium -I vj)" + + title="$(echo "$json" | jq .[0].title -r)" + channel="$(echo "$json" | jq .[0].channel -r)" + url="$(echo "$json" | jq .[0].url -r)" + + cd "$VIDEO_PATH" || exit 1 + + ${pkgs.yt-dlp}/bin/yt-dlp --write-subs --sub-langs "en.*" --embed-chapters --embed-subs -f "bv*[height<=480]+ba/b[height<=480] / wv*+ba/w" -o "$channel - $title.%(ext)s" "$url" + + ${pkgs.mpv}/bin/mpv "$channel - $title."* + ''; + + yt-hugger = pkgs.writeShellScriptBin "yt-hugger" '' + # + # This script download all videos from youtube channels specified in .channels + # file into path specified in VIDEOS. + # + # Channel File Format: + # + # + # # Comment + # + # ... + # + + VIDEOS="$HOME/Videos/Channel" + + mkdir -p "$VIDEOS" + touch "$VIDEOS/.channels" + + channels="$(cat "$VIDEOS/.channels" | sed "/^#/d")" + + [ -z "$channels" ] && echo "Channels file is empty" && exit 1 + + for entry in "$channels"; do + name="''${entry% *}" + url="''${entry##* }" + + ${pkgs.yt-dlp}/bin/yt-dlp \ + -f 'bv*[height>=720]+ba' \ + --sub-langs "en.*" --embed-subs \ + --embed-chapters --embed-thumbnail --embed-metadata \ + --download-archive "$name/.archive" \ + -o "$name/%(channel)s - %(title)s.%(ext)s" \ + "$url" + done + ''; + +in pkgs.symlinkJoin { + name = "yt"; + paths = [ + yt + yt-hugger + ]; +} diff --git a/home-manager/sxrc b/home-manager/sxrc new file mode 100755 index 0000000..43e8a82 --- /dev/null +++ b/home-manager/sxrc @@ -0,0 +1,22 @@ +#!/bin/sh + +# Start D-Bus if it isn't already started. +# https://nurdletech.com/linux-notes/agents/keyring.html#dbus. +if [[ -z "$DBUS_SESSION_BUS_ADDRESS" ]]; then + eval "$(/run/current-system/sw/bin/dbus-launch --sh-syntax --exit-with-session)" + export DBUS_SESSION_BUS_ADDRESS +fi + +systemctl --user import-environment DISPLAY XAUTHORITY + +wp-rand + +picom & + +xrdb -merge -I$HOME "$HOME/.config/Xresources" & + +dwmblocks & + +exec dbus-launch dwm 2>> $HOME/.cache/dwm.log + +# ssh-agent / exec dbus-launch -- cgit v1.2.3