From 5eb3c45031b1fd45b127db5c748c309377d9019b Mon Sep 17 00:00:00 2001 From: sioodmy Date: Mon, 30 Oct 2023 21:47:55 +0100 Subject: [PATCH] feat: move to spotify-tui --- flake.lock | 12 +++--- flake.nix | 3 +- home/cli/helix/default.nix | 2 + home/impermanence.nix | 2 +- home/rice/hyprland/config.nix | 70 +++++++++++++++++---------------- home/rice/spotify/default.nix | 74 ++++++++++++++++++----------------- secrets/secrets.nix | 8 ++++ secrets/spotify-tui.age | 28 +++++++++++++ secrets/spotify.age | 27 +++++++++++++ system/core/nix.nix | 23 ++++++++++- 10 files changed, 170 insertions(+), 79 deletions(-) create mode 100644 secrets/secrets.nix create mode 100644 secrets/spotify-tui.age create mode 100644 secrets/spotify.age diff --git a/flake.lock b/flake.lock index 5c95299b..3a9d4e71 100644 --- a/flake.lock +++ b/flake.lock @@ -551,16 +551,16 @@ ] }, "locked": { - "lastModified": 1695513385, - "narHash": "sha256-paMWWNgtycmzZe4ibkdr/IM661vMXhb9SgXnybSkeg0=", - "owner": "SoraTenshi", + "lastModified": 1698685190, + "narHash": "sha256-KYSxPFd91uvJyekhq3hVq40fkD82KMeuL/zslRieBvc=", + "owner": "sioodmy", "repo": "helix", - "rev": "f02dbced6791929d05028a50e998ec3f1565e349", + "rev": "1e7948bbdec1e207a1135080c5707c5c04f3bc44", "type": "github" }, "original": { - "owner": "SoraTenshi", - "ref": "new-daily-driver", + "owner": "sioodmy", + "ref": "add-typst", "repo": "helix", "type": "github" } diff --git a/flake.nix b/flake.nix index 49ed5b02..f67c1fb1 100644 --- a/flake.nix +++ b/flake.nix @@ -75,7 +75,8 @@ inputs.nixpkgs-lib.follows = "nixpkgs"; }; helix = { - url = "github:SoraTenshi/helix/new-daily-driver"; + # Fork of SoraTenshi's helix fork with typst support + url = "github:sioodmy/helix/add-typst"; inputs = { nixpkgs.follows = "nixpkgs"; rust-overlay.follows = "rust-overlay"; diff --git a/home/cli/helix/default.nix b/home/cli/helix/default.nix index 4a4d66d9..3fb2588f 100644 --- a/home/cli/helix/default.nix +++ b/home/cli/helix/default.nix @@ -18,6 +18,7 @@ clang-tools nil luajitPackages.lua-lsp + typst-lsp nodePackages.bash-language-server nodePackages.vscode-css-languageserver-bin nodePackages.vscode-langservers-extracted @@ -163,6 +164,7 @@ home.packages = with pkgs; [ # some other lsp related packages / dev tools typst + typst-lsp shellcheck lldb gopls diff --git a/home/impermanence.nix b/home/impermanence.nix index f09f9e0e..dae8427f 100644 --- a/home/impermanence.nix +++ b/home/impermanence.nix @@ -35,7 +35,7 @@ _: { ".cache/nix" ".cache/thunderbird/" ".thunderbird" - ".cache/spotify" + ".cache/spotifyd" ".config/spotify" ".cache/starship" ".local/share/nheko" diff --git a/home/rice/hyprland/config.nix b/home/rice/hyprland/config.nix index 02abe86e..cf53520a 100644 --- a/home/rice/hyprland/config.nix +++ b/home/rice/hyprland/config.nix @@ -108,9 +108,9 @@ in { # blur blur = { enabled = true; - size = 4; - passes = 3; - ignore_opacity = true; + size = 3; + passes = 2; + ignore_opacity = false; new_optimizations = 1; xray = true; contrast = 0.7; @@ -174,9 +174,9 @@ in { "$MOD,P,pseudo" # scratchpads - "$MOD,Z,exec, pypr toggle term && hyprctl dispatch bringactivetotop" + "ALT,code:9,exec, pypr toggle term && hyprctl dispatch bringactivetotop" "$MOD,B,exec, pypr toggle btm && hyprctl dispatch bringactivetotop" - "$MOD,code:172,exec,pypr toggle pavucontrol && hyprctl dispatch bringactivetotop" + "$MOD,code:61,exec,pypr toggle spotify && hyprctl dispatch bringactivetotop" "$MOD,code:21,exec,pypr zoom" "$MOD,code:21,exec,hyprctl reload" @@ -256,11 +256,12 @@ in { "idleinhibit focus,class:foot" "idleinhibit fullscreen, class:^(firefox)$" - "float,title:^(Firefox — Sharing Indicator)$" - "move 0 0,title:^(Firefox — Sharing Indicator)$" "float, title:^(Picture-in-Picture)$" "pin, title:^(Picture-in-Picture)$" + "workspace special silent, title:^(Firefox — Sharing Indicator)$" + ''workspace special silent, title:^(.*is sharing (your screen|a window)\.)$'' + "float,class:udiskie" # pavucontrol @@ -270,6 +271,8 @@ in { "workspace special silent,$pavucontrol" "opacity 0.80,$pavucontrol" + "opacity 0.80,title:^(Spotify)$" + "opacity 0.9,class:^(org.keepassxc.KeePassXC)$" "float, class:^(imv)$" @@ -325,31 +328,30 @@ in { ''; }; - home.file.".config/hypr/pyprland.json".text = '' - { - "pyprland": { - "plugins": ["scratchpads", "magnify"] - }, - "scratchpads": { - "term": { - "command": "foot --title scratchpad", - "margin": 50 - }, - "btm": { - "command": "foot --title scratchpad -e btm", - "margin": 50 - }, - "geary": { - "command": "geary", - "margin": 50 - }, - "pavucontrol": { - "command": "pavucontrol", - "margin": 50, - "unfocus": "hide", - "animation": "fromTop" - } - } - } - ''; + + xdg.configFile."hypr/pyprland.json".text = builtins.toJSON { + pyprland = { + plugins = ["scratchpads" "magnify"]; + }; + scratchpads = { + term = { + command = "foot --title scratchpad"; + margin = 50; + unfocus = "hide"; + animation = "fromTop"; + }; + btm = { + command = "foot --title scratchpad -e btm"; + margin = 50; + unfocus = "hide"; + animation = "fromTop"; + }; + spotify = { + command = "foot --title scratchpad -e spt"; + margin = 50; + unfocus = "hide"; + animation = "fromTop"; + }; + }; + }; } diff --git a/home/rice/spotify/default.nix b/home/rice/spotify/default.nix index 47aa2276..5c328da7 100644 --- a/home/rice/spotify/default.nix +++ b/home/rice/spotify/default.nix @@ -1,44 +1,46 @@ { pkgs, + config, inputs, ... }: { - # themable spotify - programs.spicetify = let - spicePkgs = inputs.spicetify-nix.packages.${pkgs.hostPlatform.system}.default; - in { - enable = true; + home.packages = [pkgs.spotify-tui]; + services = { + playerctld.enable = true; - theme = spicePkgs.themes.catppuccin; - - colorScheme = "mocha"; - - enabledExtensions = with spicePkgs.extensions; [ - fullAppDisplay - hidePodcasts - shuffle - skipStats - autoVolume - autoSkip - savePlaylists - phraseToPlaylist - wikify - autoSkip - copyToClipboard - history - groupSession - loopyLoop - trashbin - bookmark - keyboardShortcut - fullAppDisplayMod - # i aint paying for shit - adblock - ]; - enabledCustomApps = with spicePkgs.apps; [ - reddit - lyrics-plus - localFiles - ]; + spotifyd = { + enable = true; + package = pkgs.spotifyd.override {withMpris = true;}; + settings.global = { + autoplay = true; + backend = "pulseaudio"; + bitrate = 320; + cache_path = "${config.xdg.cacheHome}/spotifyd"; + device_type = "computer"; + initial_volume = "100"; + password_cmd = "head -1 /run/agenix/spotify"; + use_mpris = true; + username_cmd = "tail -1 /run/agenix/spotify"; + volume_normalisation = false; + }; + }; }; + + xdg.configFile."spotify-tui/config.yml".text = '' + theme: + error_border: "243, 139, 168" # error dialog border is Red + error_text: "235, 160, 172" # error message text (e.g. "Spotify API reported error 404") is Maroon + hint: "249, 226, 175" # hint text in errors Yellow + playbar_background: "17, 17, 27" # background of progress bar "Crust" + playbar_progress: "24, 24, 37" # filled-in part of the progress bar Mantle + playbar_progress_text: "166, 227, 161" # song length and time played/left indicator in the progress bar "Green" + playbar_text: "166, 173, 200" # artist name in player pane is "Subtext 0" + inactive: "108, 112, 134" # borders of inactive panes "Overlay 0" + text: "205, 214, 244" # text in panes is "Text" + active: "203, 166, 247" # current playing song in list Mauve + banner: "245, 194, 231" # the "spotify-tui" banner on launch pink + hovered: "245, 194, 231" # hovered pane border Pink + selected: "180, 190, 254" # a) selected pane border, b) hovered item in list, & c) track title in player Lavender + header: "180, 190, 254" # header text in panes (e.g. 'Title', 'Artist', etc.) Lavender + ''; } diff --git a/secrets/secrets.nix b/secrets/secrets.nix new file mode 100644 index 00000000..5b713d69 --- /dev/null +++ b/secrets/secrets.nix @@ -0,0 +1,8 @@ +let + sioodmy = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE9ExEl6WqtCI4yCqbSAhAGmzvVp/nYADbgy/Qi4AKQy sioodmy@anthe"; + + anthe = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3LBESPBY559NbAJ7KL/+K4S5InhWf5YDQgl2XjT5ZxTtPg0x24IDcEmxrPi+7nKSAvMJCkneTfWHPYoRYrNA/G15a+Pqr/9w1EtuK+D054qtz2q+oUM029JdTP/0qzbKxAV/qzUXyJyrgcGRnRYhFRKmg3Sl7G7mxhYN20RIYL3ENXnpfculGrnqX8yONda7YRQfjyEQAsLUIS4aEN7pQsUGO2lGzvXueHcRGRflbatVD59REWoD5kYE984EVhgbky092HHhDR5rIFnFJygrhl9irYk7x6Un98qsvKBeRKzpNMZ1iqs8EFdSbayNdRimooSyFLx83pUhx7SY01cJXxuVmW8Rec9xgnW8rrclz2H+ArQHSZQz/T/QPH2zZgtE3A2xX5HsmQnCu/h7yOpwD6ULTyR8/xK61jHgx4AM1hLyGGrMoPailSXyvT9OGnmXuvcIrx8R2oHy7e48DGWiTHoW8+nltWURkUjdolg373ruLxT+Rqf1JFgPcFwCEVSjVxtTz33ljFD31OOKjs5O2y/9jndwcx54twlgLr+H/6Y1SWIPNeuhNO3IiGuFkH3+JLrQLXVN9UIE1/qHyOIIJpR3ONd4uW6xDsnl8SBZUWuYf468FQGHkinWZxdYdi1SlHbulXxGPTiRjqSUBeR9fB+CND2WJEvfeSJccofk29w== root@anthe"; +in { + "spotify.age".publicKeys = [sioodmy anthe]; + "spotify-tui.age".publicKeys = [sioodmy anthe]; +} diff --git a/secrets/spotify-tui.age b/secrets/spotify-tui.age new file mode 100644 index 00000000..8821c5e0 --- /dev/null +++ b/secrets/spotify-tui.age @@ -0,0 +1,28 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEc2d0ltdyBGVWp2 +b0wrMnh5cGlCeHdoWWoxTEZadUpYSWZwZWNyb3BuOVg2TzJoRXdVCjhya2RKVGtF +dDBXeFZrbml5blVtMFVVRHB2OWpVeHJlRGZjazlSclpuZlkKLT4gc3NoLXJzYSAy +OWI5aVEKUFFNanJHYWp4b00wMnBkNSszaFFEUmUwMnpjVDVTdlE2L0xvVTVRL3BJ +ZUxLY1p5NVEyd2xRczVSUmxpMUdSNQplT043d0ljUDBqRjZpMmRQbWQ4dTRCVGk5 +NDdmVkpNQjgzRzMza016blJDM2JZczNvbld2VG4wQkVCM2NTcmg5CjVXbm9sV1pp +czFTb3pBbVhaZzU0UlpWL3l2MWN1elBFNWFlZTZhb05DQ2QwLzRlUDVtREZ2bXlp +eFVnWkhVWkwKanRVbE9ib2ZKZHloTGZnelV4a3VEcEJibWtjT2lueEoyZUZabHg1 +VVlRMEYrVkhYbnM3cTc1ZEVhOWpVSjhiRAppM3ZLRW9JdlJkS2FZVXdrWTEraVdQ +TU9zbkNIakJvdWJFcXpJQnkzQTZqU0hLd1JFK1ROMFI3TjVCdXhjTjdnClZOam4v +Y3ZDU2grNmQrUzNXNGxUMzI0WnJTaG1nU3RMbFB2SVR0Mk9SZG0rb0VTQm1RdVpT +NERvM3lTdXZCTjUKdnpwTDUrQUdjY3dNNk9FRUJCOERNaG9waVJ4aHJJWmRVU1dE +dk84dFlYUk50WWZGcFd0V2ZHKzdHZ1NUb0xQdwpENkI0TGlrN0h6NW9lOGtxOGEw +bm5ncHNCNEYrQnpRb3l4Tmk5MUpFU0hTKzNkRWx5STRFWGczYmdOaXNMa2ZhCmNr +S3NmMWc5RDVlNWY4bDdNUWdHanozOEJxTzFJYkVEemZERHdxSXQ1di80cFBSaGM3 +R2U4ZE5EY2w2elJWaVkKeGtsUkNqTG5mSXVNK21YQVBkbHdCYUI3MURuZnVqS25u +RjNwaTE2ak1xeE5Xc25GdVFSeW12U2RuV3pjdCswQQovWTlKUEwycFNXTVB0YStz +eXZaRHdkRjlwMVpOYWFoRkU1b2dEaCtDVjdrCi0+IHZES2QtZ3JlYXNlIGlBLDgg +IV1SJjw3W2ogNGIueHkKUENaWGtTZjZwYjBQTlFBSjVHTXdkMU5Zc282bXRrREVq +eVZCL1ZadFkwTFliT1BDdklBdHZCOHNQN0xFS3RMSAozVDdxN01MVW5TY2VEYk4y +SzJjRkhCc2wKLS0tIEd4YVc1SG1xVzdwSzJ3bFFVa3MzZHJwb2dXdGJIK0g4Vm11 +M1FzamhaMmcKH/KIJXfHng0MxeqscwrjzgDzFvGJNkcTuQNgiMgRfHG7ANjxlTLg +1CgLejd2tpS0Qy65xzEdfyNytGulknVpw9bckuT9E1HcMUcZYUeOfjL76pjMmO1H +rxh6JhSaG6lQQglE4nUClBvqgEp0PEbiFPqvWY83ujADZb/S1UBKYodulmTnnYMX +JUTbggflfz49/kS7VUx1EotEM3C0ExcqOXXmbVuXVZZqgkpXfw8H84ZSzp8cf+bn +GYBd3/F/vEE= +-----END AGE ENCRYPTED FILE----- diff --git a/secrets/spotify.age b/secrets/spotify.age new file mode 100644 index 00000000..2835c388 --- /dev/null +++ b/secrets/spotify.age @@ -0,0 +1,27 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEc2d0ltdyA1VS92 +VGNiVWFDYkZKNWFNM2VBcnVpVjV0Q2tSTWRTVXZ2UXFpUmVsK0hJCkRLMnhqN0h3 +WWNpL0t4VHRndE9aV3c4bGJGV1hSVmtWVHJDeEp2OTJxaXMKLT4gc3NoLXJzYSAy +OWI5aVEKRHNWRDRodzhGU0RKK2JmTXc0YkZCcTRCQ1ZGSDVwZnJtOEhPd04zU3Rr +b2p5TnNLS25WdWl2TFRMOUlRbUlldQpJYVRUQXBJY1h2OWowVExhY2tKa01oREF0 +TnRxdWpDY1VXeDZqNjRMQkxpSE5Rd2F4cVc5aVA0Z0pIVnlLR05QCjZ4MW5WQkRP +dDJmQlEwRXBlU1pTZWVjNElYN0NiRVdPWTAvR3ZUL1hwZ1ovNlJUb0w1Ulp3RHUw +UkdsOUI5ZkwKRUNRMzFCcUNteG42NGxkYXZxQlJxa0ROdExRZlZxMUJXUUlDZTdB +MWJTMDNwdVA0eFFyNExWWllEM1dBSFVzWAo5MHp2cUxreEo5OFYrTHk4OEhNWjRW +R3dzVjNNVi9FU0RPSGc2S3BnakhZWFpPbndmYTVJdVJUb2hxNVJtbEx5CkxsZEhC +TGs0cmJGbmNTTnBSOStnRWJsN0R4b2Y5NTB2UzlGNDBrQmFjQklNaHFGUDFvZHJN +aVljVC9TdW8xYVEKR0FXempNNUNkWmk1ZWEydTNMM2pmUDJNRUdJbkxLZFdyeVYv +Rmx5c05OV3R1bHhVUU4xYVVuY0hWeEg5VUtSQwp6QzR2d1hzRlgrNlM0d2lvVlhI +K0NXWUVCVlRVUmNtOFl2ME9QdzdaMVZvbW1NY2hmdXpjZ2o1UEdRWnl2Y1FvCkZI +bU1DK1B1bTQrNk5HS3V1WEJUeVZ5NkxFMVFBa2pxOGM0dk5kUVZWNDhkZXJlMFVh +ZVZlS1dVVlRWOEdJVDEKUkVwTzBaeFZhQ3NlQmFoUUJEK0M3RHRwSVZma0hmenEz +MWh5MXcrL01VLzY5QzFxUXpDWkc5NDFQdzNKR0xSNApRaHRhVjJVTmIvQnpHb1lz +RmZkRHdML2E4RWJka2VpWitueGRwVStKRGVzCi0+IDBkT2NALWdyZWFzZQp1TWxz +YWZGOG45MXg1aTcwanNzSnYzbjZlU2NSZFdhQ1VPQ0c4dXBaLzJicnJzVDh3M2Ez +S1dIQ0lLWEEvS3JECnMyOFB5Uzhxc1YrWlJHL3JNS0ZsNWcybEllWHNHK3VIQWdS +UUtWdHJsNGhQdng5T1NybFNRejB5Yy9rYwotLS0gazhmMWlrYjI0SzMvWUdjbU92 +c1dKVkNic0I1a0UwVEdqUktoSHJhSjlVWQrTCwMlrk8bkcHLYiJkpe12XWFURpTT +AgklwVIBABsxv0cB0fYPFLHOohH78nF8Ww4HPTw0QwzIQA2zMcrMpmhPMFxv26xD +mTovt5AaNqJyoHkfWCONjI37sKHIZoth7eoGWyivhpcO+mMN1EUdI6asAMwQol5l +8Xqrx84mhpZD72bwNDUn9t1C5JS+GIMkf01zI8o= +-----END AGE ENCRYPTED FILE----- diff --git a/system/core/nix.nix b/system/core/nix.nix index ca488b29..eb76d214 100644 --- a/system/core/nix.nix +++ b/system/core/nix.nix @@ -15,10 +15,31 @@ "nix/flake-channels/home-manager".source = inputs.home-manager; }; - systemPackages = with pkgs; [git deadnix alejandra statix inputs.nh.packages.${pkgs.system}.default nix-output-monitor]; + systemPackages = with pkgs; [ + git + deadnix + alejandra + statix + inputs.nh.packages.${pkgs.system}.default + nix-output-monitor + inputs.ragenix.packages."${system}".default + ]; defaultPackages = []; }; + # secrets + age.secrets.spotify = { + file = ../../secrets/spotify.age; + owner = "sioodmy"; + group = "users"; + }; + age.secrets.spotify-tui = { + file = ../../secrets/spotify-tui.age; + path = "/home/sioodmy/.config/spotify-tui/client.yml"; + owner = "sioodmy"; + group = "users"; + }; + nh = { enable = true; clean.enable = true;