add overrides.nix + custom fonts

This commit is contained in:
Your Name 2024-04-28 20:42:02 +03:00
parent 040a4319a4
commit 499a7e5b38
5 changed files with 276 additions and 231 deletions

View file

@ -1,4 +1,4 @@
{ pkgs, lib, inputs, stable, self, ... }:
{ pkgs, lib, inputs, stable, unstable, self, ... }:
let
lock-false = {
Value = false;
@ -8,40 +8,10 @@ let
Value = true;
Status = "locked";
};
kitty_config = pkgs.writeText "kitty.conf" ''
# See https://sw.kovidgoyal.net/kitty/conf.html
shell_integration no-rc
allow_remote_control password
background #171717
background_opacity 0.8
color0 #3F3F3F
color1 #705050
color10 #72D5A3
color11 #F0DFAF
color12 #94BFF3
color13 #EC93D3
color14 #93E0E3
color15 #FFFFFF
color2 #60B48A
color3 #DFAF8F
color4 #9AB8D7
color5 #DC8CC3
color6 #8CD0D3
color7 #DCDCCC
color8 #709080
color9 #DCA3A3
foreground #DCDCCC
hide_window_decorations yes
remember_window_size yes
remote_control_password kitty-notification-password-fish ls
font_family FiraCode Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
'';
shwewo = inputs.shwewo.packages.${pkgs.system};
overrides = import ./overrides.nix {
inherit inputs pkgs lib self stable unstable;
};
in {
imports = [
inputs.nixvim.nixosModules.nixvim
@ -53,11 +23,13 @@ in {
wl-clipboard
wl-clipboard-x11
#(callPackage ../derivations/nu_plugin_dns.nix { })
(fishPlugins.callPackage ../derivations/fish/fish-functions.nix { })
xorg.xwininfo
jq
dropbox
spotdl
xfce.thunar
# xfce.thunar
(pkgs.xfce.thunar.override { thunarPlugins = [pkgs.xfce.thunar-archive-plugin]; })
rustdesk-flutter
autossh
scrcpy
@ -76,41 +48,51 @@ in {
wget
wlogout
nom
(vesktop.overrideAttrs (oldAttrs: {
desktopItems = [ (pkgs.makeDesktopItem {
name = "vesktop";
desktopName = "Discord";
exec = "vesktop %U";
icon = "discord";
startupWMClass = "Vesktop";
genericName = "Internet Messenger";
keywords = [ "discord" "vencord" "electron" "chat" ];
categories = [ "Network" "InstantMessaging" "Chat" ];
})];
}))
localsend
trayscale
fishPlugins.done
monero-gui
translate-shell
tridactyl-native #firefox tridactyl addon
ripgrep gh # for nvim
lunarvim # text edit
# tridactyl-native #firefox tridactyl addon
ripgrep gh
lexend # font from google (non-mono)
#fira-code-nerdfont # mono font
iosevka-comfy.comfy
iosevka-comfy.comfy-duo
iosevka-comfy.comfy-wide
iosevka-comfy.comfy-wide-duo
ibm-plex
fira-code
# iosevka-comfy.comfy
# iosevka-comfy.comfy-duo
# iosevka-comfy.comfy-wide
# iosevka-comfy.comfy-wide-duo
iosevka-comfy.comfy-motion-duo
jamesdsp easyeffects
nmap
wget
shwewo.ephemeralbrowser
shwewo.ruchrome
shwewo.spotify
#(pkgs.symlinkJoin {
# name = "ExprSelect";
# paths = [ shwewo.spotify ];
# buildInputs = [ pkgs.makeWrapper ];
# postBuild = ''
# wrapProgram $out/bin/spotify --set NIXOS_OZONE_WL 0
# '';
#})
shwewo.audiorelay
shwewo.tdesktop
(pkgs.writeScriptBin "tlp" ''/run/wrappers/bin/sudo ${pkgs.tlp}/bin/tlp $@'')
prismlauncher
stable.teleport_12 #work
tlrc #tldr
boxbuddy
stable.distrobox
atool #unarchive
open-interpreter
overrides.diosevka
# overrides.iosevka-comfy
overrides.vesktop
overrides.input-font
# overrides.input-fonts
stable.peazip
]);
programs.firefox = {
@ -145,7 +127,7 @@ in {
Status = "Locked";
};
"browser.tabs.firefox-view" = lock-false;
"browser.startup.homepage" = "https://ifconfig.me";
"browser.startup.homepage" = "about:blank";
};
# https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265/17
@ -178,10 +160,8 @@ in {
(extension "multi-account-containers" "@testpilot-containers")
(extension "jkcs" "{6d9f4f04-2499-4fed-ae4a-02c5658c5d00}")
(extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
(extension "new-window-without-toolbar"
"new-window-without-toolbar@tkrkt.com")
(extension "open-in-spotify-desktop"
"{04a727ec-f366-4f19-84bc-14b41af73e4d}")
(extension "new-window-without-toolbar" "new-window-without-toolbar@tkrkt.com")
(extension "open-in-spotify-desktop" "{04a727ec-f366-4f19-84bc-14b41af73e4d}")
(extension "search_by_image" "{2e5ff8c8-32fe-46d0-9fc8-6b8986621f3c}")
(extension "single-file" "{531906d3-e22f-4a6c-a102-8057b88a1a63}")
(extension "soundfixer" "soundfixer@unrelenting.technology")
@ -202,15 +182,15 @@ in {
# ];
#};
programs.thunar.enable = true;
programs.xfconf.enable = true;
programs.virt-manager.enable = true;
programs.steam.enable = true;
programs.gamemode.enable = true;
programs.thunar.plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
programs.thunar.enable = true;
# programs.thunar.plugins = with pkgs.xfce; [
# thunar-archive-plugin
# thunar-volman
# ];
programs.fish = {
enable = true;
@ -225,17 +205,20 @@ in {
set -U __done_kitty_remote_control_password "kitty-notification-password-fish"
set -U __done_notification_command "${pkgs.libnotify}/bin/notify-send --icon=kitty --app-name=kitty \$title \$argv[1]"
'';
};
interactiveShellInit = ''
function last_file_in_downloads
echo "\"$(find ~/Downloads -type f -printf "%C@:%p\n" -not -regex ".*Downloads/torrent_incomplete/.*" -not -regex ".*Downloads/torrent/.*" | sort -rn | head -n 1 | cut -d ':' -f2-)\""
end
#programs.neovim = {
# enable = true;
# defaultEditor = true;
# configure = {
# customRC = ''
# :set mouse=a
# '';
# };
#};
abbr -a --position anywhere lfd --function last_file_in_downloads
function copy_clipboard
echo '| wl-copy'
end
abbr -a --position anywhere CC --function copy_clipboard
'';
};
programs.nixvim = {
enable = true;

120
apps/overrides.nix Normal file
View file

@ -0,0 +1,120 @@
{ pkgs, lib, inputs, stable, unstable, self, ... }:
let
vesktopDesktopItem = pkgs.makeDesktopItem {
name = "vesktop";
desktopName = "Discord";
exec = "vesktop %U";
icon = "discord";
startupWMClass = "Vesktop";
genericName = "Internet Messenger";
keywords = [ "discord" "vencord" "electron" "chat" ];
categories = [ "Network" "InstantMessaging" "Chat" ];
};
in {
diosevka = unstable.iosevka.override {
privateBuildPlan = ''
[buildPlans.IosevkaDiosevka]
family = "Iosevka Diosevka"
spacing = "quasi-proportional"
serifs = "sans"
noCvSs = true
exportGlyphNames = true
[buildPlans.IosevkaDiosevka.variants.design]
capital-i = "short-serifed"
capital-l = "serifless"
capital-m = "hanging-serifless"
capital-q = "crossing"
capital-v = "straight-serifless"
capital-w = "straight-serifless"
e = "flat-crossbar"
f = "flat-hook-serifless"
i = "hooky"
j = "flat-hook-serifless"
l = "flat-tailed"
r = "serifless"
t = "flat-hook"
w = "straight-flat-top-serifless"
long-s = "flat-hook-tailed-middle-serifed"
eszet = "longs-s-lig-bottom-serifed"
capital-delta = "straight"
lower-iota = "serifed-flat-tailed"
lower-tau = "flat-tailed"
cyrl-el = "straight"
cyrl-em = "hanging-serifless"
cyrl-en = "serifless"
one = "no-base"
two = "straight-neck-serifless"
four = "semi-open-serifless"
nine = "straight-bar"
tilde = "low"
asterisk = "penta-low"
ascii-single-quote = "straight"
paren = "flat-arc"
brace = "curly"
at = "compact"
dollar = "interrupted"
cent = "bar-interrupted"
percent = "rings-continuous-slash"
lig-equal-chain = "with-notch"
[buildPlans.IosevkaDiosevka.variants.italic]
f = "flat-hook-tailed"
i = "serifed-flat-tailed"
l = "serifed-flat-tailed"
w = "straight-flat-top-motion-serifed"
long-s = "flat-hook-tailed"
eszet = "longs-s-lig-tailed-serifless"
[buildPlans.IosevkaDiosevka.weights.Regular]
shape = 400
menu = 400
css = 400
[buildPlans.IosevkaDiosevka.weights.Bold]
shape = 700
menu = 700
css = 700
[buildPlans.IosevkaDiosevka.widths.Normal]
shape = 500
menu = 5
css = "normal"
'';
set = "Diosevka";
};
# iosevka-comfy = pkgs.iosevka.overrideAttrs rec {
# privateBuildPlan = builtins.readFile ./iosevka-comfy.toml;
# set = "comfy-duo";
# };
vesktop = (pkgs.symlinkJoin {
name = "vesktop";
paths = [ (unstable.vesktop.override {
electron = unstable.electron;
vencord = unstable.vencord.overrideAttrs rec {
version = "unstable-0bebc85";
gitHash = "0bebc85";
src = pkgs.fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "0bebc85";
hash = "sha256-Td+Juf7OhyNilowwKQL4Gw/HrVpzAwNzLR5Vi6S5Bys=";
};
};
}) ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
mkdir -p $out/share/applications
ln -sf ${vesktopDesktopItem}/share/applications/* $out/share/applications
'';
});
input-font = pkgs.callPackage ../derivations/input-font.nix { url = inputs.secrets.home.input-font.domain; };
}

View file

@ -1,89 +0,0 @@
{ lib, pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation rec {
name = "audio-relay";
version = "0.26.3";
src = builtins.fetchurl {
url = "https://dl.audiorelay.net/setups/linux/audiorelay-0.26.3.tar.gz";
sha256 = "sha256:05553s1gp9bimr79nvagdk0l8ahmbwkqg6i6csavvzw40kisj49r";
};
nativeBuildInputs = with pkgs; [
autoPatchelfHook
makeWrapper
];
buildInputs = with pkgs; [
jdk
alsaLib
file
fontconfig.lib
freetype
libglvnd
libpulseaudio
stdenv.cc.cc.lib
xorg.libX11
xorg.libXext
xorg.libXi
xorg.libXrender
xorg.libXtst
xorg.libXrandr
xorg.libXinerama
zlib
];
dontAutoPatchelf = true;
postFixup = ''
autoPatchelf \
$out/bin \
$out/lib/runtime/lib/jexec \
$out/lib/runtime/lib/jspawnhelper \
#$(find "$out/lib/runtime/lib" -type f -name 'lib*.so' -a -not -name 'libj*.so')
wrapProgram $out/bin/AudioRelay \
--prefix LD_LIBRARY_PATH : $out/lib/runtime/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.alsaLib}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.fontconfig.lib}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.freetype}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.libpulseaudio}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.stdenv.cc.cc.lib}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libX11}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXext}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXi}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXrender}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXtst}/lib/ \
--prefix LD_LIBRARY_PATH : ${pkgs.zlib}/lib/
'';
installPhase = ''
mkdir -p $out/share/icons/hicolor/512x512/apps
ln -sf AudioRelay bin/audio-relay
cp -rp bin lib $out/
cp lib/AudioRelay.png $out/share/icons/hicolor/512x512/apps/audiorelay.png
cp -r ${desktopItem}/share/applications $out/share
cp $out/lib/app/AudioRelay.cfg $out/lib/app/.AudioRelay-wrapped.cfg
'';
desktopItem = pkgs.makeDesktopItem {
name = "AudioRelay";
exec = "audio-relay";
genericName = "AudioRelay audio bridge";
comment = "AudioRelay sound server/player";
categories = [ "Network" "Audio" ];
desktopName = "AudioRelay";
mimeTypes = [];
icon = "audiorelay";
};
sourceRoot = ".";
meta = with lib; {
description = "An application to stream audio between devices";
homepage = "https://audiorelay.net";
license = licenses.unfree;
# platforms = platforms.x86_64-linux;
maintainers = with maintainers; [];
};
}

View file

@ -0,0 +1,98 @@
{ lib
, stdenv
, fetchzip
, python3
, config
, acceptLicense ? config.input-fonts.acceptLicense or false
, url ? null
}:
let
throwLicense = throw ''
Input is available free of charge for private/unpublished usage. This includes things like your personal coding app or for composing plain text documents.
To use it, you need to agree to its license: https://input.djr.com/license/
You can express acceptance by setting acceptLicense to true in your
configuration. Note that this is not a free license so it requires allowing
unfree licenses.
configuration.nix:
nixpkgs.config.allowUnfree = true;
nixpkgs.config.input-fonts.acceptLicense = true;
config.nix:
allowUnfree = true;
input-fonts.acceptLicense = true;
If you would like to support this project, consider purchasing a license at <http://input.djr.com/buy>.
'';
releaseDate = "2015-06-24";
in
stdenv.mkDerivation rec {
pname = "input-fonts";
version = "1.2";
src =
fetchzip {
name = "input-fonts-${version}";
# Add .zip parameter so that zip unpackCmd can match it.
# url = "https://input.djr.com/build/?fontSelection=fourStyleFamily&regular=InputSansNarrow-Light&italic=InputSansNarrow-LightItalic&bold=InputSansNarrow-Medium&boldItalic=InputSansNarrow-MediumItalic&a=0&g=0&i=topserif&l=0&zero=slash&asterisk=height&braces=straight&preset=default&line-height=1.1&accept=I+do&email=";
url = "${url}"; #i had to shorten link bc otherwise got errors that it's too long
sha256 = "sha256-tYC/yDaHz2AD5PpikTHewneZNaF3O0fClhhJvjeKdAY=";
stripRoot = false;
postFetch = ''
# Reset the timestamp to release date for determinism.
PATH=${lib.makeBinPath [ python3.pkgs.fonttools ]}:$PATH
for ttf_file in $out/Input_Fonts/*/*/*.ttf; do
ttx_file=$(dirname "$ttf_file")/$(basename "$ttf_file" .ttf).ttx
ttx "$ttf_file"
rm "$ttf_file"
touch -m -t ${builtins.replaceStrings [ "-" ] [ "" ] releaseDate}0000 "$ttx_file"
ttx --recalc-timestamp "$ttx_file"
rm "$ttx_file"
done
'';
};
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
find Input_Fonts -name "*.ttf" -exec cp -a {} "$out"/share/fonts/truetype/ \;
mkdir -p "$out"/share/doc
cp -a *.txt "$out"/share/doc/
runHook postInstall
'';
meta = with lib; {
description = "Fonts for Code, from Font Bureau";
longDescription = ''
Input is a font family designed for computer programming, data,
and text composition. It was designed by David Jonathan Ross
between 2012 and 2014 and published by The Font Bureau. It
contains a wide array of styles so you can fine-tune the
typography that works best in your editing environment.
Input Mono is a monospaced typeface, where all characters occupy
a fixed width. Input Sans and Serif are proportional typefaces
that are designed with all of the features of a good monospace
generous spacing, large punctuation, and easily distinguishable
characters but without the limitations of a fixed width.
'';
homepage = "https://input.djr.com/";
license = licenses.unfree;
maintainers = with maintainers; [
romildo
];
platforms = platforms.all;
};
}

View file

@ -1,67 +0,0 @@
{ spotify, stdenv, rustPlatform, fetchFromGitHub, xorg, pkgs }:
let
spotify-adblock = rustPlatform.buildRustPackage {
pname = "spotify-adblock";
version = "1.0.3";
src = fetchFromGitHub {
owner = "abba23";
repo = "spotify-adblock";
rev = "5a3281dee9f889afdeea7263558e7a715dcf5aab";
hash = "sha256-UzpHAHpQx2MlmBNKm2turjeVmgp5zXKWm3nZbEo0mYE=";
};
cargoSha256 = "sha256-wPV+ZY34OMbBrjmhvwjljbwmcUiPdWNHFU3ac7aVbIQ=";
patchPhase = ''
substituteInPlace src/lib.rs \
--replace 'config.toml' $out/etc/spotify-adblock/config.toml
'';
buildPhase = ''
make
'';
installPhase = ''
mkdir -p $out/etc/spotify-adblock
install -D --mode=644 config.toml $out/etc/spotify-adblock
mkdir -p $out/lib
install -D --mode=644 --strip target/release/libspotifyadblock.so $out/lib
'';
};
spotifywm = stdenv.mkDerivation {
name = "spotifywm";
src = fetchFromGitHub {
owner = "dasj";
repo = "spotifywm";
rev = "8624f539549973c124ed18753881045968881745";
hash = "sha256-AsXqcoqUXUFxTG+G+31lm45gjP6qGohEnUSUtKypew0=";
};
buildInputs = [ xorg.libX11 ];
installPhase = "mv spotifywm.so $out";
};
in spotify.overrideAttrs (old: {
postInstall = (old.postInstall or "") + ''
mkdir spotify-xpui
mv $out/share/spotify/Apps/xpui.spa .
${pkgs.unzip}/bin/unzip -qq xpui.spa -d spotify-xpui/
cd spotify-xpui/
${pkgs.perl}/bin/perl -pi -w -e 's|adsEnabled:!0|adsEnabled:!1|' xpui.js
${pkgs.perl}/bin/perl -pi -w -e 's|allSponsorships||' xpui.js
${pkgs.perl}/bin/perl -pi -w -e 's/(return|.=.=>)"free"===(.+?)(return|.=.=>)"premium"===/$1"premium"===$2$3"free"===/g' xpui.js
${pkgs.perl}/bin/perl -pi -w -e 's/(case .:|async enable\(.\)\{)(this.enabled=.+?\(.{1,3},"audio"\),|return this.enabled=...+?\(.{1,3},"audio"\))((;case 4:)?this.subscription=this.audioApi).+?this.onAdMessage\)/$1$3.cosmosConnector.increaseStreamTime(-100000000000)/' xpui.js
${pkgs.perl}/bin/perl -pi -w -e 's|(Enables quicksilver in-app messaging modal",default:)(!0)|$1false|' xpui.js
${pkgs.perl}/bin/perl -pi -w -e 's/(\.WiPggcPDzbwGxoxwLWFf\s*{)/$1 height: 0;/;' home-hpto.css
${pkgs.zip}/bin/zip -qq -r xpui.spa .
mv xpui.spa $out/share/spotify/Apps/xpui.spa
cd ..
rm xpui.spa
ln -s ${spotify-adblock}/lib/libspotifyadblock.so $libdir
sed -i "s:^Name=Spotify.*:Name=Spotify-adblock:" "$out/share/spotify/spotify.desktop"
wrapProgram $out/bin/spotify \
--set LD_PRELOAD "${spotify-adblock}/lib/libspotifyadblock.so"
'';
})