diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8cddc5a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +assets/wallpapers/cap_blow.png +assets/wallpapers/cap_filter.png + +result diff --git a/assets/README.md b/assets/README.md index 46ac19f..42a6c17 100644 --- a/assets/README.md +++ b/assets/README.md @@ -4,4 +4,8 @@ All of stuff(Wallpapers, Scripts, etc.) packaged in single nix deriv. ## Wallpaper Sources -* `` +* `zh.jpeg` - [じんだいじ-JINDAIJI-](https://jindaiji.fanbox.cc/posts/10183122) +* `cap_blow.png`[^1] - [シャポコ](https://www.pixiv.net/artworks/107214767) +* `cap_filter.png`[^1] - [シャポコ](https://www.pixiv.net/artworks/91199411) + +[^1]: Not included as original file due to licensing. Download by yourself before compiling. When building/`nixos-rebuild`-ing with these gitignored files, please explicitly use `path:` directives to not using nix's git check/ignoring. diff --git a/assets/default.nix b/assets/default.nix deleted file mode 100644 index 28d55c8..0000000 --- a/assets/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -stdenv.mkDerivation { - name = "ricing-assets"; - src = ./.; - installPhase = '' - mkdir -p $out/usr/local/share/wallpapers - cp -r wallpapers/ $out/usr/local/share/wallpapers - ''; -} diff --git a/assets/flake.lock b/assets/flake.lock new file mode 100644 index 0000000..c8bac26 --- /dev/null +++ b/assets/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1774244481, + "narHash": "sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "4590696c8693fea477850fe379a01544293ca4e2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/assets/flake.nix b/assets/flake.nix new file mode 100644 index 0000000..35c5d23 --- /dev/null +++ b/assets/flake.nix @@ -0,0 +1,29 @@ +{ + description = "Assets/Resources for ricing available as nix deriv"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.11"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + config = {}; + overlays = []; + }; + my-ricing-assets = pkgs.callPackage ./package.nix {}; + in + { + packages = { + inherit my-ricing-assets; + default = my-ricing-assets; + my-wallpapers = pkgs.callPackage ./wallpapers {}; + my-scripts = pkgs.callPackage ./scripts {}; + }; + overlays.default = final: prev: { my-ricing-assets = final.callPackage ./package.nix {}; }; + } + ); +} diff --git a/assets/package.nix b/assets/package.nix new file mode 100644 index 0000000..c36cd8c --- /dev/null +++ b/assets/package.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +let + my-scripts = pkgs.callPackage ./scripts {}; + my-wallpapers = pkgs.callPackage ./wallpapers {}; +in +pkgs.symlinkJoin { + name = "my-ricing-assets"; + paths = [ + my-scripts + my-wallpapers + ]; +} diff --git a/assets/scripts/default.nix b/assets/scripts/default.nix new file mode 100644 index 0000000..17beef5 --- /dev/null +++ b/assets/scripts/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +let + misskey-scripts = pkgs.callPackage ./misskey.nix {}; +in +pkgs.symlinkJoin { + name = "my-scripts"; + paths = [misskey-scripts]; +} diff --git a/assets/scripts/misskey.nix b/assets/scripts/misskey.nix index eb29a84..12d89a8 100644 --- a/assets/scripts/misskey.nix +++ b/assets/scripts/misskey.nix @@ -1,26 +1,31 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: let - getLatestN = writeShellApplication { + getLatestN = pkgs.writeShellApplication { name = "misskey-getLatestN"; - runtimeInputs = [ + runtimeInputs = with pkgs; [ curl jq ]; text = '' - if [[ -a /tmp/${config.networking.hostName}/misskey-scripts/getLatestN.fifo ]]; then - mkdir -p /tmp/${config.networking.hostName}/misskey-scripts - mkfifo /tmp/${config.networking.hostName}/misskey-scripts/getLatestN.fifo + if [ ! -e /tmp//misskey-scripts/getLatestN1.fifo ]; then + mkdir -p /tmp/misskey-scripts + mkfifo /tmp/misskey-scripts/getLatestN1.fifo + fi + if [ ! -e /tmp//misskey-scripts/getLatestN2.fifo ]; then + mkdir -p /tmp/misskey-scripts + mkfifo /tmp/misskey-scripts/getLatestN2.fifo fi - pipeLocation=/tmp/${config.networking.hostName}/misskey-scripts/getLatestN.fifo + pipeLocation1=/tmp/misskey-scripts/getLatestN1.fifo + pipeLocation2=/tmp/misskey-scripts/getLatestN2.fifo - curl https://misskey.io/api/notes -s --request POST --header 'Content-Type: application/json' --data '{"local": true, "reply": false, "renote": false, "withFiles": false, "poll": false, "limit": $1}' > "$pipeLocation" & + curl https://misskey.io/api/notes -s --request POST --header 'Content-Type: application/json' --data "{\"local\": true, \"reply\": false, \"renote\": false, \"withFiles\": false, \"poll\": false, \"limit\": $1}" > "$pipeLocation1" & - echo "$(jq -M -r '.[].text' < $pipeLocation)" > $pipeLocation & + jq -M -r '.[].text' < $pipeLocation1 > $pipeLocation2 & - while read line; do + while read -r line; do echo "$line" - done < $pipeLocation + done < $pipeLocation2 wait ''; }; diff --git a/assets/wallpapers/default.nix b/assets/wallpapers/default.nix new file mode 100644 index 0000000..d135876 --- /dev/null +++ b/assets/wallpapers/default.nix @@ -0,0 +1,21 @@ +{ stdenv, lib, ... }: +let + inherit (lib.fileset) toSource unions intersection maybeMissing gitTracked; + sourceFiles = unions [ + (gitTracked ./.) + (maybeMissing ./cap_blow.png) + (maybeMissing ./cap_filter.png) + ]; +in +lib.fileset.trace sourceFiles +stdenv.mkDerivation { + name = "my-wallpapers"; + src = toSource { + root = ./.; + fileset = sourceFiles; + }; + installPhase = '' + mkdir -p $out/usr/local/share/wallpapers + cp -r *.{jpg,jpeg,png} $out/usr/local/share/wallpapers/ + ''; +} diff --git a/assets/wallpapers/zh.jpeg b/assets/wallpapers/zh.jpeg new file mode 100644 index 0000000..41fe301 Binary files /dev/null and b/assets/wallpapers/zh.jpeg differ diff --git a/flake.lock b/flake.lock index 86e0f1f..cdecf1f 100644 --- a/flake.lock +++ b/flake.lock @@ -32,6 +32,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -39,11 +57,11 @@ ] }, "locked": { - "lastModified": 1773963144, - "narHash": "sha256-WzBOBfSay3GYilUfKaUa1Mbf8/jtuAiJIedx7fWuIX4=", + "lastModified": 1774559029, + "narHash": "sha256-deix7yg3j6AhjMPnFDCmWB3f83LsajaaULP5HH2j34k=", "owner": "nix-community", "repo": "home-manager", - "rev": "a91b3ea73a765614d90360580b689c48102d1d33", + "rev": "a0bb0d11514f92b639514220114ac8063c72d0a3", "type": "github" }, "original": { @@ -53,13 +71,30 @@ "type": "github" } }, + "my-ricing-assets": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "path": "./assets", + "type": "path" + }, + "original": { + "path": "./assets", + "type": "path" + }, + "parent": [] + }, "nixos-hardware": { "locked": { - "lastModified": 1773533765, - "narHash": "sha256-qonGfS2lzCgCl59Zl63jF6dIRRpvW3AJooBGMaXjHiY=", + "lastModified": 1774567711, + "narHash": "sha256-uVlOHBvt6Vc/iYNJXLPa4c3cLXwMllOCVfAaLAcphIo=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "f8e82243fd601afb9f59ad230958bd073795cbfe", + "rev": "3f6f874dfc34d386d10e434c48ad966c4832243e", "type": "github" }, "original": { @@ -71,11 +106,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773814637, - "narHash": "sha256-GNU+ooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY=", + "lastModified": 1774388614, + "narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96", + "rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e", "type": "github" }, "original": { @@ -100,15 +135,48 @@ "type": "github" } }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1774386573, + "narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", + "my-ricing-assets": "my-ricing-assets", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable", "xlibre-overlay": "xlibre-overlay" } }, "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { "flake": false, "locked": { "path": "./systems.nix", @@ -143,7 +211,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems", + "systems": "systems_2", "xlibre-drivers-overlay-choice": "xlibre-drivers-overlay-choice", "xserver-meson-flags": "xserver-meson-flags" }, diff --git a/flake.nix b/flake.nix index 693635d..0d5e275 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,7 @@ { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager = { url = "github:nix-community/home-manager/release-25.11"; @@ -10,6 +11,10 @@ url = "git+https://codeberg.org/takagemacoed/xlibre-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; + my-ricing-assets = { + url = "path:./assets"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = inputs@{ self, nixpkgs, ... }: { nixosModules = { diff --git a/home/alacritty.nix b/home/alacritty.nix index 1b611a1..366f282 100644 --- a/home/alacritty.nix +++ b/home/alacritty.nix @@ -8,7 +8,7 @@ multiplier = 5; }; font = { - size = 14; + size = 10; normal = { family = "0xProto Nerd Font Mono"; style = "Regular"; @@ -25,6 +25,9 @@ window = { opacity = 0.8; }; + terminal = { + shell = "${pkgs.zsh}/bin/zsh"; + }; }; }; } diff --git a/home/default.nix b/home/default.nix index 7c9b38c..f903685 100644 --- a/home/default.nix +++ b/home/default.nix @@ -10,6 +10,7 @@ in ./cmd_tools.nix ./i3.nix ./media.nix + ./picom.nix ./tmux.nix ./vim.nix ./zed.nix diff --git a/home/i3.nix b/home/i3.nix index 217d981..fdc3999 100644 --- a/home/i3.nix +++ b/home/i3.nix @@ -12,6 +12,7 @@ in { programs.i3status = { enable = true; + enableDefault = false; general = { output_format = "i3bar"; interval = 1; @@ -34,7 +35,7 @@ in settings = { format = "LD %1min:%5min:%15min"; format_above_threshold = "LD H (%1min:%5min)"; - max_threshold = "0.9"; + max_threshold = "4.9"; }; }; "memory" = { @@ -79,6 +80,7 @@ in xsession.windowManager.i3 = { enable = true; config = { + defaultWorkspace = ''workspace number "1"''; modifier = modKey; menu = MENU; terminal = TERM; @@ -88,6 +90,9 @@ in smartGaps = true; inner = 10; }; + startup = [ + { command = "fcitx5 -r"; always = true; notification = false; } + ]; modes = { resize = { "${UP}" = "resize shrink height 10 px or 10 ppt"; @@ -117,6 +122,7 @@ in "${modKey}+e" = "layout toggle split"; "${modKey}+Shift+space" = "floating toggle"; "${modKey}+space" = "focus mode_toggle"; + "${modKey}+minus" = "scratchpad show"; "${modKey}+Shift+minus" = "move scratchpad"; "${modKey}+n" = "workspace next"; "${modKey}+p" = "workspace prev"; @@ -144,6 +150,9 @@ in "${modKey}+Shift+8" = ''move container to workspace number "8"''; "${modKey}+Shift+9" = ''move container to workspace number "9"''; "${modKey}+Shift+0" = ''move container to workspace number "10"''; + "XF86AudioRaiseVolume" = ''exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%''; + "XF86AudioLowerVolume" = ''exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%''; + "XF86AudioMute" = ''exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle''; }; }; }; diff --git a/home/picom.nix b/home/picom.nix new file mode 100644 index 0000000..2e669e9 --- /dev/null +++ b/home/picom.nix @@ -0,0 +1,17 @@ +{ config, pkgs, ... }: +{ + services.picom = { + enable = true; + backend = "glx"; + fade = true; + fadeExclude = [ + "window_type *= 'menu'" + "focused = 1" + ]; + inactiveOpacity = 0.9; + shadow = true; + shadowExclude = [ + "focused = 1" + ]; + }; +} diff --git a/home/zsh.nix b/home/zsh.nix index 6e2ef73..e7b11a3 100644 --- a/home/zsh.nix +++ b/home/zsh.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { programs.zsh = { enable = true; @@ -9,6 +9,12 @@ size = 100; }; syntaxHighlighting.enable = true; - defaultKeymap = "vicmd"; + initContent = let + prependCfg = lib.mkOrder 500 ""; + appendCfg = lib.mkOrder 1500 '' + bindkey -v + ''; + in + lib.mkMerge [ prependCfg appendCfg ]; }; } diff --git a/hosts/waku/default.nix b/hosts/waku/default.nix index ef7e28f..635fca7 100644 --- a/hosts/waku/default.nix +++ b/hosts/waku/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, inputs, ... }: { imports = [ ./hardware-configuration.nix @@ -37,19 +37,19 @@ services.ollama = { enable = true; acceleration = "rocm"; - }; - services.n8n = { - enable = true; + package = pkgs.unstable.ollama-rocm; }; services.open-webui = { enable = true; port = 11111; + package = pkgs.unstable.open-webui; }; services.fprintd.enable = true; services.xserver.windowManager.i3.enable = true; services.xserver.resolutions = [ {x = 2560; y = 1600; } ]; + services.xserver.dpi = lib.mkForce 108; services.desktopManager.gnome.enable = true; services.gnome = { core-apps.enable = false; @@ -63,6 +63,7 @@ services.flatpak.enable = true; xdg.portal.extraPortals = with pkgs; [ + xdg-desktop-portal-gtk xdg-desktop-portal-gnome xdg-desktop-portal-xapp kdePackages.xdg-desktop-portal-kde @@ -82,20 +83,26 @@ vim tmux saleae-logic-2 + my-ricing-assets + xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + xdg-desktop-portal-xapp + kdePackages.xdg-desktop-portal-kde ]) ++ (with pkgs.gnomeExtensions; [ kiwi-menu blur-my-shell - forge - vibe-panel dash-to-dock ]); + environment.variables = { + MY_RICING_ASSETS_PATH = "${pkgs.my-ricing-assets}/"; + }; + nixpkgs.config.allowUnfree = true; networking.hostName = "wakugumi-hitoroku"; networking.firewall.enable = true; system.stateVersion = "25.11"; - } diff --git a/overlays/default.nix b/overlays/default.nix index 051fb4b..de0b778 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,12 @@ -{ config, pkgs, lib, ... }: +{ config, pkgs, lib, inputs, ... }: { - nixpkgs.overlays = []; + nixpkgs.overlays = [ + (final: _: { + unstable = import inputs.nixpkgs-unstable { + inherit (final.stdenv.hostPlatform) system; + inherit (final) config; + }; + }) + inputs.my-ricing-assets.overlays.x86_64-linux.default + ]; } diff --git a/profiles/base.nix b/profiles/base.nix index b43527a..739ffaa 100644 --- a/profiles/base.nix +++ b/profiles/base.nix @@ -134,5 +134,7 @@ fastfetch stow yubikey-manager + alsa-utils + pulseaudio ]; } diff --git a/profiles/desktop.nix b/profiles/desktop.nix index aba049a..f4ef523 100644 --- a/profiles/desktop.nix +++ b/profiles/desktop.nix @@ -17,7 +17,7 @@ xkb = { layout = "us"; }; - dpi = 96; + dpi = lib.mkDefault 96; displayManager.lightdm = { enable = true; greeters.gtk = { @@ -66,6 +66,8 @@ enable = true; }; + security.polkit.enable = true; + environment.systemPackages = (with pkgs; [ alacritty xfe