diff --git a/flake.lock b/flake.lock index 73bc823..41364d9 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1734821669, - "narHash": "sha256-F7Z2tIJsUEhErpK0sGMep4xG/eTVuK2eBpvgh3cS2H8=", + "lastModified": 1741217763, + "narHash": "sha256-g/TrltIjFHIjtzKY5CJpoPANfHQWDD43G5U1a/v5oVg=", "owner": "nix-community", "repo": "home-manager", - "rev": "51160a097a850839b7eae7ef08d0d3e7e353dfc3", + "rev": "486b066025dccd8af7fbe5dd2cc79e46b88c80da", "type": "github" }, "original": { @@ -21,13 +21,32 @@ "type": "github" } }, + "homix": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1720719665, + "narHash": "sha256-BKcOoDlMC86zExMKXFXQ04HO99fUNFmtEdvP+gB45Pk=", + "owner": "sioodmy", + "repo": "homix", + "rev": "62bc58f2350cbb061e61ac0f3d63018663fbe4cb", + "type": "github" + }, + "original": { + "owner": "sioodmy", + "ref": "main", + "repo": "homix", + "type": "github" + } + }, "nixos-hardware": { "locked": { - "lastModified": 1734352517, - "narHash": "sha256-mfv+J/vO4nqmIOlq8Y1rRW8hVsGH3M+I2ESMjhuebDs=", + "lastModified": 1741325094, + "narHash": "sha256-RUAdT8dZ6k/486vnu3tiNRrNW6+Q8uSD2Mq7gTX4jlo=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "b12e314726a4226298fe82776b4baeaa7bcf3dcd", + "rev": "b48cc4dab0f9711af296fc367b6108cf7b8ccb16", "type": "github" }, "original": { @@ -39,11 +58,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734649271, - "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", + "lastModified": 1719690277, + "narHash": "sha256-0xSej1g7eP2kaUF+JQp8jdyNmpmCJKRpO12mKl/36Kc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507", + "rev": "2741b4b489b55df32afac57bc4bfd220e8bf617e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1741246872, + "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "10069ef4cf863633f57238f179a0297de84bd8d3", "type": "github" }, "original": { @@ -55,8 +90,9 @@ "root": { "inputs": { "home-manager": "home-manager", + "homix": "homix", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" } } }, diff --git a/flake.nix b/flake.nix index 29c0616..eea250a 100644 --- a/flake.nix +++ b/flake.nix @@ -5,10 +5,11 @@ nixpkgs.url = "nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; + homix.url = "github:sioodmy/homix/main"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; }; - outputs = inputs@{ self, nixpkgs, home-manager, ... }: + outputs = inputs@{ self, nixpkgs, homix, ... }: let systemSettings = { system = "x86_64-linux"; @@ -16,12 +17,6 @@ host = "syushiki"; timezone = "Asia/Tokyo"; locale = "ja_JP.UTF-8"; - bootConf = { - mode = "uefi"; - mountPath = "/boot"; - grubDev = ""; - }; - gpuType = "nvidia"; }; userSettings = { @@ -29,8 +24,6 @@ name = "Kenryu Shibata"; email-dev = "kenryudev5894@gmail.com"; dotfilesDir = "/etc/nixos"; - editor = "nvim"; - editor-pkg = pkgs.neovim; }; pkgs = import inputs.nixpkgs { @@ -39,34 +32,27 @@ lib = inputs.nixpkgs.lib; in { - #nixosModules = { - # home-mngr = home-manager.nixosModules.home-manager { - # home-manager.useGlobalPkgs = true; - # home-manager.useUserPackages = true; - # home-manager.users.${userSettings.username} = import (./. + "/hosts/${systemSettings.host}/home.nix"); - # home-manager.extraSpecialArgs = { - # inherit userSettings; - # }; + nixosModules = { + homix = homix.nixosModules.default; + }; + nixosConfigurations = import ./hosts inputs; + #nixosConfigurations.syushiki = lib.nixosSystem { + # system = systemSettings.system; + # modules = [ + # ./hosts/syushiki + # ./overlays + # home-manager.nixosModules.home-manager { + # home-manager.useGlobalPkgs = true; + # home-manager.useUserPackages = true; + # home-manager.users.${userSettings.username} = import (./. + "/hosts/${systemSettings.host}/home.nix"); + # home-manager.extraSpecialArgs = { + # inherit userSettings; + # }; + # } + # ]; + # specialArgs = { + # inherit inputs systemSettings userSettings; # }; #}; - - #nixosConfigurations = import ./hosts inputs { inherit systemSettings; inherit userSettings; }; - nixosConfigurations.syushiki = lib.nixosSystem { - system = systemSettings.system; - modules = [ - ./hosts/syushiki - home-manager.nixosModules.home-manager { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.${userSettings.username} = import (./. + "/hosts/${systemSettings.host}/home.nix"); - home-manager.extraSpecialArgs = { - inherit userSettings; - }; - } - ]; - specialArgs = { - inherit inputs systemSettings userSettings; - }; - }; }; } diff --git a/hosts/default.nix b/hosts/default.nix index 2f056eb..bcfd9e5 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,20 +1,17 @@ -{ self, nixpkgs, ... }: { systemSettings, userSettings, ... }: +{ self, nixpkgs, ... }: let inherit (self) inputs; - inherit systemSettings userSettings; mkHost = name: nixpkgs.lib.nixosSystem { modules = [ ./${name} - { - nixpkgs.hostPlatform = systemSettings.system; - } + ../overlays ] ++ builtins.attrValues self.nixosModules; specialArgs = { inherit inputs; - inherit systemSettings; - inherit userSettings; + systemSettings = import ./${name}/systemSettings.nix; + userSettings = import ../user/userSettings.nix; }; }; in diff --git a/hosts/syushiki/default.nix b/hosts/syushiki/default.nix index b5abadb..69f046c 100644 --- a/hosts/syushiki/default.nix +++ b/hosts/syushiki/default.nix @@ -1,7 +1,8 @@ -{ config, lib, pkgs, modulesPath, ... }: { +{ config, lib, pkgs, modulesPath, systemSettings, ... }: { imports = [ ../../system ../../system/nvidia + ../../user (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -30,7 +31,7 @@ [ { device = "/dev/disk/by-uuid/d933c349-8e70-41e1-8d13-605656dba18b"; } ]; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + nixpkgs.hostPlatform = lib.mkDefault systemSettings.system; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; # Use the systemd-boot EFI boot loader. diff --git a/hosts/syushiki/home.nix b/hosts/syushiki/home.nix index 3380278..e0424c0 100644 --- a/hosts/syushiki/home.nix +++ b/hosts/syushiki/home.nix @@ -1,14 +1,7 @@ { pkgs, userSettings, ... }: { imports = [ - ../../user/apps/browsers/firefox.nix - ../../user/apps/browsers/chromium.nix - ../../user/apps/thunderbird.nix ../../user/dev/tools/git.nix - ../../user/dev/tools/gitui.nix - ../../user/dev/tools/firefox-devedition.nix - ../../user/dev/tools/dbeaver-bin.nix - ../../user/dev/tools/tldr.nix ../../user/dev/tools/gh.nix ../../user/dev/editor/vscodium.nix ../../user/dev/editor/zed-editor.nix @@ -16,25 +9,6 @@ ../../user/dev/lang/python.nix ../../user/dev/lang/rust.nix ../../user/dev/lang/ecmascript.nix - ../../user/dev/ide/qtcreator.nix - ../../user/apps/utils/alacritty.nix - ../../user/apps/utils/keepassxc.nix - #../../user/apps/utils/cava.nix - ../../user/apps/utils/owncloud-client.nix - ../../user/apps/utils/fzf.nix - ../../user/apps/utils/zoxide.nix - ../../user/apps/media/vlc.nix - ../../user/apps/media/mpv.nix - ../../user/apps/media/yt-dlp.nix - ../../user/apps/media/kdenlive.nix - ../../user/apps/media/obs-studio.nix - ../../user/apps/graphics/gimp.nix - ../../user/apps/graphics/inkscape.nix - ../../user/apps/games/mangohud.nix - ../../user/apps/office/texlive.nix - #../../user/apps/office/libreoffice-fresh.nix - ../../user/shell/bash.nix - ../../user/wm/xmonad/xmonad.nix ]; home.username = userSettings.username; diff --git a/hosts/syushiki/systemSettings.nix b/hosts/syushiki/systemSettings.nix new file mode 100644 index 0000000..f728dfb --- /dev/null +++ b/hosts/syushiki/systemSettings.nix @@ -0,0 +1,6 @@ +{ + system = "x86_64-linux"; + hostname = "kenryu-nixos"; + timezone = "Asia/Tokyo"; + locale = "ja_JP.UTF-8"; +} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..1c16f87 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,11 @@ +{ config, pkgs, lib, ... }: +{ + nixpkgs.overlays = [ + (final: prev: { + qemu_full = prev.qemu_full.override { + cephSupport = false; + xenSupport = false; + }; + }) + ]; +} diff --git a/pkgs/zen-browser/default.nix b/pkgs/zen-browser/default.nix new file mode 100644 index 0000000..3f5b27c --- /dev/null +++ b/pkgs/zen-browser/default.nix @@ -0,0 +1,7 @@ +let + nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.11"; + pkgs = import nixpkgs { config = {}; overlays = []; }; +in +{ + zen-browser = pkgs.callPackage ./zen-browser.nix { }; +} diff --git a/pkgs/zen-browser/zen-browser.nix b/pkgs/zen-browser/zen-browser.nix new file mode 100644 index 0000000..dc255dd --- /dev/null +++ b/pkgs/zen-browser/zen-browser.nix @@ -0,0 +1,21 @@ +{ lib, stdenv, ... }: +let + version = "1.7b"; +in +stdenv.mkDerivation { + pname="zen-browser"; + inherit version; + + src = fetchTarball { + url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-x86_64.tar.bz2"; + sha256 = "0aig890fcynxwi7xi8jzd1w2gzg47n0jqfq76wvnkwcam611b2bp"; + }; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + + installPhase = '' + cp -r . $out + ''; +} diff --git a/system/audio/default.nix b/system/audio/default.nix index 8d84865..355cf4b 100644 --- a/system/audio/default.nix +++ b/system/audio/default.nix @@ -1,18 +1,23 @@ -{ ... }: +{ pkgs, ... }: { - hardware.pulseaudio = { + services.pulseaudio = { support32Bit = true; daemon.config = { flat-volumes = "yes"; }; + package = pkgs.pulseaudioFull; }; security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; + #services.pipewire = { + # enable = true; + # alsa.enable = true; + # alsa.support32Bit = true; + # pulse.enable = true; + # jack.enable = true; + #}; + + environment.systemPackages = with pkgs; [ + alsa-utils + ]; } diff --git a/system/default.nix b/system/default.nix index 0a52f4f..3ecfc33 100644 --- a/system/default.nix +++ b/system/default.nix @@ -1,4 +1,4 @@ -{ ... }: { +{ pkgs, ... }: { imports = [ ./audio ./bluetooth @@ -11,6 +11,7 @@ ./time ./users ./services + ./vnc ./wm ./env.nix ./utils.nix diff --git a/system/env.nix b/system/env.nix index 08596dd..0d594f7 100644 --- a/system/env.nix +++ b/system/env.nix @@ -2,6 +2,5 @@ { environment.variables = { EDITOR = "vim"; - MOZ_ENABLE_WAYLAND = 1; }; } diff --git a/system/inputMethods/default.nix b/system/inputMethods/default.nix index 5bdf445..1b51ac5 100644 --- a/system/inputMethods/default.nix +++ b/system/inputMethods/default.nix @@ -8,7 +8,7 @@ waylandFrontend = true; plasma6Support = true; addons = with pkgs; [ - #fcitx5-mozc + fcitx5-mozc fcitx5-skk ]; }; diff --git a/system/network/default.nix b/system/network/default.nix index 8e2965f..2e360a9 100644 --- a/system/network/default.nix +++ b/system/network/default.nix @@ -5,5 +5,5 @@ networkmanager.enable = true; firewall.enable = true; }; - systemd.network.wait-online.enable = false; + systemd.services.NetworkManager-wait-online.enable = false; } diff --git a/system/nix/default.nix b/system/nix/default.nix index 0e58393..497ec64 100644 --- a/system/nix/default.nix +++ b/system/nix/default.nix @@ -28,6 +28,7 @@ nixpkgs = { config = { allowUnfree = true; + allowBroken = true; }; }; } diff --git a/system/nvidia/default.nix b/system/nvidia/default.nix index 015dfb2..20fcea6 100644 --- a/system/nvidia/default.nix +++ b/system/nvidia/default.nix @@ -6,8 +6,8 @@ modesetting.enable = true; powerManagement.enable = false; powerManagement.finegrained = false; - open = true; nvidiaSettings = true; + open = false; package = config.boot.kernelPackages.nvidiaPackages.production; }; } diff --git a/system/services/default.nix b/system/services/default.nix index c7d3c96..82542f8 100644 --- a/system/services/default.nix +++ b/system/services/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ ./cups + ./docker ./flatpak ./libvirtd ./podman diff --git a/system/services/docker/default.nix b/system/services/docker/default.nix index 0c5ae6a..f1671f3 100644 --- a/system/services/docker/default.nix +++ b/system/services/docker/default.nix @@ -15,8 +15,5 @@ docker docker-compose docker-buildx - nvidia-container-toolkit ]; - - hardware.nvidia-container-toolkit.enable = lib.lists.elem "nvidia" config.services.xserver.videoDrivers; } diff --git a/system/services/podman/default.nix b/system/services/podman/default.nix index 0340d5d..03d2b54 100644 --- a/system/services/podman/default.nix +++ b/system/services/podman/default.nix @@ -4,8 +4,8 @@ virtualisation.podman = { enable = true; - dockerCompat = true; - dockerSocket.enable = true; + dockerCompat = false; + dockerSocket.enable = false; defaultNetwork.settings.dns_enabled = true; }; diff --git a/system/users/default.nix b/system/users/default.nix index be6d731..53ca5b0 100644 --- a/system/users/default.nix +++ b/system/users/default.nix @@ -13,9 +13,28 @@ "video" "audio" "libvirtd" + "nix" + "power" + "docker" ]; uid = 1000; + homix = true; }; users.defaultUserShell = pkgs.bash; + + security.sudo = { + enable = true; + extraRules = [ + { + commands = + builtins.map (command: { + command = "/run/current-system/sw/bin/${command}"; + options = ["NOPASSWD"]; + }) + [ "poweroff" "reboot" "nixos-rebuild" "systemctl" "nmtui" "tailscale" ]; + groups = [ "wheel" ]; + } + ]; + }; } diff --git a/system/vnc/default.nix b/system/vnc/default.nix new file mode 100644 index 0000000..3abc274 --- /dev/null +++ b/system/vnc/default.nix @@ -0,0 +1,11 @@ +{ pkgs, lib, ... }: +let + use-vnc = pkgs.callPackage ./use-vnc-script.nix { }; +in +{ + environment.systemPackages = with pkgs; [ + x11vnc + wayvnc + use-vnc + ]; +} diff --git a/system/vnc/use-vnc-script.nix b/system/vnc/use-vnc-script.nix new file mode 100644 index 0000000..85821d1 --- /dev/null +++ b/system/vnc/use-vnc-script.nix @@ -0,0 +1,10 @@ +{ pkgs, lib, ... }: +pkgs.writeShellScriptBin "use-vnc" '' + if [[ $XDG_SESSION_TYPE == "x11" ]]; then + x11vnc -display :0 & + else + wayvnc 0.0.0.0 & + fi + + sudo echo $! > /var/run/use-vnc.pid + '' diff --git a/user/README.md b/user/README.md index 9c4c5fb..074f0c9 100644 --- a/user/README.md +++ b/user/README.md @@ -1,2 +1,3 @@ -* `packages`: packages that does not require any wrap or config -* `wrapped`: packages that is wrapped with config +* `packages`: packages that have zero to few configs and do not require any wrapping +* `wrapped`: packages that is wrapped with extensive config +* `homed`: packages that has configuration on common home directory. diff --git a/user/apps/browsers/chromium.nix b/user/apps/browsers/chromium.nix deleted file mode 100644 index 8627ff7..0000000 --- a/user/apps/browsers/chromium.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - chromium - ]; -} diff --git a/user/apps/browsers/firefox.nix b/user/apps/browsers/firefox.nix deleted file mode 100644 index 0674f5f..0000000 --- a/user/apps/browsers/firefox.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ pkgs, config, ... }: -{ - home.packages = [ pkgs.firefox ]; -} diff --git a/user/apps/games/badlion-client.nix b/user/apps/games/badlion-client.nix deleted file mode 100644 index 443f298..0000000 --- a/user/apps/games/badlion-client.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: -let - badlionClient = pkgs.callPackage ../../../pkgs/badlion-client/badlion-client.nix { }; -in -{ - home.packages = [ badlionClient ]; -} diff --git a/user/apps/games/mangohud.nix b/user/apps/games/mangohud.nix deleted file mode 100644 index 37b2002..0000000 --- a/user/apps/games/mangohud.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - mangohud - ]; -} diff --git a/user/apps/games/minecraft.nix b/user/apps/games/minecraft.nix deleted file mode 100644 index b1d162f..0000000 --- a/user/apps/games/minecraft.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - minecraft - ]; -} diff --git a/user/apps/graphics/gimp.nix b/user/apps/graphics/gimp.nix deleted file mode 100644 index 62b832a..0000000 --- a/user/apps/graphics/gimp.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - gimp - ]; -} diff --git a/user/apps/graphics/inkscape.nix b/user/apps/graphics/inkscape.nix deleted file mode 100644 index ebfac2b..0000000 --- a/user/apps/graphics/inkscape.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - inkscape - ]; -} diff --git a/user/apps/media/kdenlive.nix b/user/apps/media/kdenlive.nix deleted file mode 100644 index 885e70d..0000000 --- a/user/apps/media/kdenlive.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - kdenlive - ]; -} diff --git a/user/apps/media/mpv.nix b/user/apps/media/mpv.nix deleted file mode 100644 index 477a6db..0000000 --- a/user/apps/media/mpv.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - mpv - ]; -} diff --git a/user/apps/media/obs-studio.nix b/user/apps/media/obs-studio.nix deleted file mode 100644 index 4f97d02..0000000 --- a/user/apps/media/obs-studio.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, pkgs, libs, ... }: -{ - home.packages = with pkgs; [ - obs-studio - ]; -} diff --git a/user/apps/media/vlc.nix b/user/apps/media/vlc.nix deleted file mode 100644 index 2cdf857..0000000 --- a/user/apps/media/vlc.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - vlc - ]; -} diff --git a/user/apps/media/yt-dlp.nix b/user/apps/media/yt-dlp.nix deleted file mode 100644 index 7ea6ec0..0000000 --- a/user/apps/media/yt-dlp.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - yt-dlp - ]; -} diff --git a/user/apps/office/libreoffice-fresh.nix b/user/apps/office/libreoffice-fresh.nix deleted file mode 100644 index 2b9c206..0000000 --- a/user/apps/office/libreoffice-fresh.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - libreoffice-fresh - ]; -} diff --git a/user/apps/office/texlive.nix b/user/apps/office/texlive.nix deleted file mode 100644 index 8c08d65..0000000 --- a/user/apps/office/texlive.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ pkgs, ... }: -let - mytex = pkgs.texliveMedium.withPackages - (ps: [ - ps.biber - ps.biblatex - ps.bibtex - ps.import - ps.subfiles - ps.wrapfig - ps.collection-langjapanese - ]); -in -{ - home.packages = with pkgs; [ - mytex - pandoc - qpdf - ]; -} diff --git a/user/apps/thunderbird.nix b/user/apps/thunderbird.nix deleted file mode 100644 index 4b202ab..0000000 --- a/user/apps/thunderbird.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - thunderbird - ]; -} diff --git a/user/apps/utils/alacritty.nix b/user/apps/utils/alacritty.nix deleted file mode 100644 index a68e475..0000000 --- a/user/apps/utils/alacritty.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, lib, ... }: -{ - home.packages = with pkgs; [ - alacritty - ]; - programs.alacritty.enable = true; - programs.alacritty.settings = { - window.opacity = lib.mkForce 0.85; - }; -} diff --git a/user/apps/utils/cava.nix b/user/apps/utils/cava.nix deleted file mode 100644 index 50b4808..0000000 --- a/user/apps/utils/cava.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - cava - ]; -} diff --git a/user/apps/utils/fzf.nix b/user/apps/utils/fzf.nix deleted file mode 100644 index 8a29408..0000000 --- a/user/apps/utils/fzf.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - fzf - ]; -} diff --git a/user/apps/utils/keepassxc.nix b/user/apps/utils/keepassxc.nix deleted file mode 100644 index 0f52cf5..0000000 --- a/user/apps/utils/keepassxc.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - keepassxc - ]; -} diff --git a/user/apps/utils/owncloud-client.nix b/user/apps/utils/owncloud-client.nix deleted file mode 100644 index 0f894f6..0000000 --- a/user/apps/utils/owncloud-client.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - owncloud-client - ]; -} diff --git a/user/apps/utils/zoxide.nix b/user/apps/utils/zoxide.nix deleted file mode 100644 index e60015d..0000000 --- a/user/apps/utils/zoxide.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - zoxide - ]; -} diff --git a/user/default.nix b/user/default.nix index 3de93f3..cbbf1c0 100644 --- a/user/default.nix +++ b/user/default.nix @@ -1,5 +1,7 @@ { ... }: { imports = [ ./packages + ./homed + ./wrapped ]; } diff --git a/user/dev/ide/qtcreator.nix b/user/dev/ide/qtcreator.nix deleted file mode 100644 index 014f538..0000000 --- a/user/dev/ide/qtcreator.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = [ pkgs.qtcreator ]; -} diff --git a/user/dev/lang/python.nix b/user/dev/lang/python.nix index 1c30ab1..320e94b 100644 --- a/user/dev/lang/python.nix +++ b/user/dev/lang/python.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { home.packages = with pkgs; [ - python3Full + python313Full ]; } diff --git a/user/dev/tools/dbeaver-bin.nix b/user/dev/tools/dbeaver-bin.nix deleted file mode 100644 index 813a399..0000000 --- a/user/dev/tools/dbeaver-bin.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - dbeaver-bin - ]; -} diff --git a/user/dev/tools/firefox-devedition.nix b/user/dev/tools/firefox-devedition.nix deleted file mode 100644 index 746c146..0000000 --- a/user/dev/tools/firefox-devedition.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - firefox-devedition-bin - ]; -} diff --git a/user/dev/tools/gitui.nix b/user/dev/tools/gitui.nix deleted file mode 100644 index 985aa4a..0000000 --- a/user/dev/tools/gitui.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - gitui - ]; -} diff --git a/user/dev/tools/tldr.nix b/user/dev/tools/tldr.nix deleted file mode 100644 index 7dbfdac..0000000 --- a/user/dev/tools/tldr.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - tldr - ]; -} diff --git a/user/homed/default.nix b/user/homed/default.nix new file mode 100644 index 0000000..97fcf96 --- /dev/null +++ b/user/homed/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./git + ./profile + ./xmonad + ]; +} diff --git a/user/homed/git/default.nix b/user/homed/git/default.nix new file mode 100644 index 0000000..4cafe7a --- /dev/null +++ b/user/homed/git/default.nix @@ -0,0 +1,19 @@ +{ config, pkgs, userSettings, ... }: +{ + environment.systemPackages = with pkgs; [ + git + gh + ]; + + homix.".gitconfig".text = '' + [user] + email = ${userSettings.email-dev} + name = ${userSettings.name} + [credential "https://github.com"] + helper = + helper = ${pkgs.gh}/bin/gh auth git-credential + [credential "https://gist.github.com"] + helper = + helper = ${pkgs.gh}/bin/gh auth git-credential + ''; +} diff --git a/user/homed/profile/default.nix b/user/homed/profile/default.nix new file mode 100644 index 0000000..4e52151 --- /dev/null +++ b/user/homed/profile/default.nix @@ -0,0 +1,4 @@ +{ config, ... }: +{ + homix.".profile".source = ./profile; +} diff --git a/user/.profile b/user/homed/profile/profile similarity index 100% rename from user/.profile rename to user/homed/profile/profile diff --git a/user/homed/xmonad/default.nix b/user/homed/xmonad/default.nix new file mode 100644 index 0000000..d4dfa0c --- /dev/null +++ b/user/homed/xmonad/default.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + xmobar + dunst + networkmanagerapplet + rofi + feh + pavucontrol + xorg.xkill + xdg-utils + xdg-desktop-portal + xdg-desktop-portal-gtk + ]; + + homix.".config/xmonad/xmonad.hs".source = ./xmonad.hs; + homix.".config/xmobar/xmobarrc".source = ./xmobarrc; +} diff --git a/user/homed/xmonad/xmobarrc b/user/homed/xmonad/xmobarrc new file mode 100644 index 0000000..64ebcc9 --- /dev/null +++ b/user/homed/xmonad/xmobarrc @@ -0,0 +1,33 @@ +Config { + font = "IPAGothic 9", + bgColor = "black", + fgColor = "#646464", + position = Top, + border = BottomB, + borderColor = "#646464", + + sepChar = "%", + alignSep = "}{", + template = "%multicpu% | %coretemp% | %memory% | %dynnetwork% }{ %date%", + + lowerOnStart = True, + hideOnStart = False, + allDesktops = True, + overrideRedirect = True, + pickBroadest = False, + persistent = True, + + commands = + [ + Run DynNetwork [ "--template", ": kB/s|kB/s", + "--Low", "1000", -- units: B/s + "--High", "5000", -- units: B/s + "--low", "darkgreen", + "--normal", "darkorange", + "--high", "darkred" ] 10, + + Run MultiCpu [ + "--template", "Cpu: C|C" + ] 10, + ] +} diff --git a/user/homed/xmonad/xmonad.hs b/user/homed/xmonad/xmonad.hs new file mode 100644 index 0000000..4d822a7 --- /dev/null +++ b/user/homed/xmonad/xmonad.hs @@ -0,0 +1,335 @@ +-- +-- xmonad example config file. +-- +-- A template showing all available configuration hooks, +-- and how to override the defaults in your own xmonad.hs conf file. +-- +-- Normally, you'd only override those defaults you care about. +-- + +import XMonad +import XMonad.Hooks.DynamicLog +import Data.Monoid +import System.Exit + +import qualified XMonad.StackSet as W +import qualified Data.Map as M + +-- The preferred terminal program, which is used in a binding below and by +-- certain contrib modules. +-- +myTerminal = "alacritty" + +-- Whether focus follows the mouse pointer. +myFocusFollowsMouse :: Bool +myFocusFollowsMouse = True + +-- Whether clicking on a window to focus also passes the click to the window +myClickJustFocuses :: Bool +myClickJustFocuses = False + +-- Width of the window border in pixels. +-- +myBorderWidth = 1 + +-- modMask lets you specify which modkey you want to use. The default +-- is mod1Mask ("left alt"). You may also consider using mod3Mask +-- ("right alt"), which does not conflict with emacs keybindings. The +-- "windows key" is usually mod4Mask. +-- +myModMask = mod4Mask + +-- The default number of workspaces (virtual screens) and their names. +-- By default we use numeric strings, but any string may be used as a +-- workspace name. The number of workspaces is determined by the length +-- of this list. +-- +-- A tagging example: +-- +-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] +-- +myWorkspaces = ["term", "web", "code", "debug", "docs"] ++ map show [6..9] + +-- Border colors for unfocused and focused windows, respectively. +-- +myNormalBorderColor = "#dddddd" +myFocusedBorderColor = "#ff0000" + +------------------------------------------------------------------------ +-- Key bindings. Add, modify or remove key bindings here. +-- +myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ + + -- launch a terminal + [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) + + -- launch dmenu + , ((modm, xK_p ), spawn "rofi -show drun") + + -- close focused window + , ((modm .|. shiftMask, xK_c ), kill) + + -- Rotate through the available layout algorithms + , ((modm, xK_space ), sendMessage NextLayout) + + -- Reset the layouts on the current workspace to default + , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) + + -- Resize viewed windows to the correct size + , ((modm, xK_n ), refresh) + + -- Move focus to the next window + , ((modm, xK_Tab ), windows W.focusDown) + + -- Move focus to the next window + , ((modm, xK_j ), windows W.focusDown) + + -- Move focus to the previous window + , ((modm, xK_k ), windows W.focusUp ) + + -- Move focus to the master window + , ((modm, xK_m ), windows W.focusMaster ) + + -- Swap the focused window and the master window + , ((modm, xK_Return), windows W.swapMaster) + + -- Swap the focused window with the next window + , ((modm .|. shiftMask, xK_j ), windows W.swapDown ) + + -- Swap the focused window with the previous window + , ((modm .|. shiftMask, xK_k ), windows W.swapUp ) + + -- Shrink the master area + , ((modm, xK_h ), sendMessage Shrink) + + -- Expand the master area + , ((modm, xK_l ), sendMessage Expand) + + -- Push window back into tiling + , ((modm, xK_t ), withFocused $ windows . W.sink) + + -- Increment the number of windows in the master area + , ((modm , xK_comma ), sendMessage (IncMasterN 1)) + + -- Deincrement the number of windows in the master area + , ((modm , xK_period), sendMessage (IncMasterN (-1))) + + -- Toggle the status bar gap + -- Use this binding with avoidStruts from Hooks.ManageDocks. + -- See also the statusBar function from Hooks.DynamicLog. + -- + -- , ((modm , xK_b ), sendMessage ToggleStruts) + + -- Quit xmonad + , ((modm .|. shiftMask, xK_q ), io exitSuccess) + + -- Restart xmonad + , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") + + -- Run xmessage with a summary of the default keybindings (useful for beginners) + , ((modm .|. shiftMask, xK_slash ), xmessage help) + ] + ++ + + -- + -- mod-[1..9], Switch to workspace N + -- mod-shift-[1..9], Move client to workspace N + -- + [((m .|. modm, k), windows $ f i) + | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] + , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] + ++ + + -- + -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 + -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 + -- + [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f)) + | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..] + , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] + + +------------------------------------------------------------------------ +-- Mouse bindings: default actions bound to mouse events +-- +myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList + + -- mod-button1, Set the window to floating mode and move by dragging + [ ((modm, button1), \w -> focus w >> mouseMoveWindow w + >> windows W.shiftMaster) + + -- mod-button2, Raise the window to the top of the stack + , ((modm, button2), \w -> focus w >> windows W.shiftMaster) + + -- mod-button3, Set the window to floating mode and resize by dragging + , ((modm, button3), \w -> focus w >> mouseResizeWindow w + >> windows W.shiftMaster) + + -- you may also bind events to the mouse scroll wheel (button4 and button5) + ] + +------------------------------------------------------------------------ +-- Layouts: + +-- You can specify and transform your layouts by modifying these values. +-- If you change layout bindings be sure to use 'mod-shift-space' after +-- restarting (with 'mod-q') to reset your layout state to the new +-- defaults, as xmonad preserves your old layout settings by default. +-- +-- The available layouts. Note that each layout is separated by |||, +-- which denotes layout choice. +-- +myLayout = tiled ||| Mirror tiled ||| Full + where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 3/100 + +------------------------------------------------------------------------ +-- Window rules: + +-- Execute arbitrary actions and WindowSet manipulations when managing +-- a new window. You can use this to, for example, always float a +-- particular program, or have a client always appear on a particular +-- workspace. +-- +-- To find the property name associated with a program, use +-- > xprop | grep WM_CLASS +-- and click on the client you're interested in. +-- +-- To match on the WM_NAME, you can use 'title' in the same way that +-- 'className' and 'resource' are used below. +-- +myManageHook = composeAll + [ className =? "MPlayer" --> doFloat + , className =? "Gimp" --> doFloat + , resource =? "desktop_window" --> doIgnore + , resource =? "kdesktop" --> doIgnore ] + +------------------------------------------------------------------------ +-- Event handling + +-- * EwmhDesktops users should change this to ewmhDesktopsEventHook +-- +-- Defines a custom handler function for X Events. The function should +-- return (All True) if the default handler is to be run afterwards. To +-- combine event hooks use mappend or mconcat from Data.Monoid. +-- +myEventHook = mempty + +------------------------------------------------------------------------ +-- Status bars and logging + +-- Perform an arbitrary action on each internal state change or X event. +-- See the 'XMonad.Hooks.DynamicLog' extension for examples. +-- +myLogHook = return () + +------------------------------------------------------------------------ +-- Startup hook + +-- Perform an arbitrary action each time xmonad starts or is restarted +-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize +-- per-workspace layout choices. +-- +-- By default, do nothing. +myStartupHook = do + spawn "feh --bg-scale ~/画像/wallpaper/85444653_p0.jpg" + +------------------------------------------------------------------------ +-- Now run xmonad with all the defaults we set up. + +-- Run xmonad with the settings you specify. No need to modify this. +-- +main :: IO() +main = do + xmobar myConfig >>= xmonad + +-- A structure containing your configuration settings, overriding +-- fields in the default config. Any you don't override, will +-- use the defaults defined in xmonad/XMonad/Config.hs +-- +-- No need to modify this. +-- +myConfig = def { + -- simple stuff + terminal = myTerminal, + focusFollowsMouse = myFocusFollowsMouse, + clickJustFocuses = myClickJustFocuses, + borderWidth = myBorderWidth, + modMask = myModMask, + workspaces = myWorkspaces, + normalBorderColor = myNormalBorderColor, + focusedBorderColor = myFocusedBorderColor, + + -- key bindings + keys = myKeys, + mouseBindings = myMouseBindings, + + -- hooks, layouts + layoutHook = myLayout, + manageHook = myManageHook, + handleEventHook = myEventHook, + logHook = myLogHook, + startupHook = myStartupHook + } + +-- | Finally, a copy of the default bindings in simple textual tabular format. +help :: String +help = unlines ["The default modifier key is 'alt'. Default keybindings:", + "", + "-- launching and killing programs", + "mod-Shift-Enter Launch xterminal", + "mod-p Launch dmenu", + "mod-Shift-p Launch gmrun", + "mod-Shift-c Close/kill the focused window", + "mod-Space Rotate through the available layout algorithms", + "mod-Shift-Space Reset the layouts on the current workSpace to default", + "mod-n Resize/refresh viewed windows to the correct size", + "mod-Shift-/ Show this help message with the default keybindings", + "", + "-- move focus up or down the window stack", + "mod-Tab Move focus to the next window", + "mod-Shift-Tab Move focus to the previous window", + "mod-j Move focus to the next window", + "mod-k Move focus to the previous window", + "mod-m Move focus to the master window", + "", + "-- modifying the window order", + "mod-Return Swap the focused window and the master window", + "mod-Shift-j Swap the focused window with the next window", + "mod-Shift-k Swap the focused window with the previous window", + "", + "-- resizing the master/slave ratio", + "mod-h Shrink the master area", + "mod-l Expand the master area", + "", + "-- floating layer support", + "mod-t Push window back into tiling; unfloat and re-tile it", + "", + "-- increase or decrease number of windows in the master area", + "mod-comma (mod-,) Increment the number of windows in the master area", + "mod-period (mod-.) Deincrement the number of windows in the master area", + "", + "-- quit, or restart", + "mod-Shift-q Quit xmonad", + "mod-q Restart xmonad", + "mod-[1..9] Switch to workSpace N", + "", + "-- Workspaces & screens", + "mod-Shift-[1..9] Move client to workspace N", + "mod-{w,e,r} Switch to physical/Xinerama screens 1, 2, or 3", + "mod-Shift-{w,e,r} Move client to screen 1, 2, or 3", + "", + "-- Mouse bindings: default actions bound to mouse events", + "mod-button1 Set the window to floating mode and move by dragging", + "mod-button2 Raise the window to the top of the stack", + "mod-button3 Set the window to floating mode and resize by dragging"] diff --git a/user/packages/cava/default.nix b/user/packages/cava/default.nix new file mode 100644 index 0000000..41d0f1c --- /dev/null +++ b/user/packages/cava/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + cava + ]; +} diff --git a/user/packages/default.nix b/user/packages/default.nix index de4ecd2..1f1889b 100644 --- a/user/packages/default.nix +++ b/user/packages/default.nix @@ -1,24 +1,29 @@ { ... }: { imports = [ + ./cava ./chromium ./dbeaver ./firefox ./firefox-dev-edition + ./freecad + ./fzf ./gimp ./gitui ./inkscape ./kdenlive ./keepassxc + ./kicad ./libreoffice-fresh ./mangohud - ./minecraft ./mpv ./obs-studio ./owncloud-client + ./pandoc ./qtcreator ./thunderbird ./tldr ./vlc ./yt-dlp + ./zoxide ]; } diff --git a/user/packages/firefox-dev-edition/default.nix b/user/packages/firefox-dev-edition/default.nix index 56e9d4c..ac7ab23 100644 --- a/user/packages/firefox-dev-edition/default.nix +++ b/user/packages/firefox-dev-edition/default.nix @@ -3,4 +3,8 @@ environment.systemPackages = with pkgs; [ firefox-devedition-bin ]; + + environment.variables = { + MOZ_ENABLE_WAYLAND = 1; + }; } diff --git a/user/packages/firefox/default.nix b/user/packages/firefox/default.nix index b5e601d..8620ad7 100644 --- a/user/packages/firefox/default.nix +++ b/user/packages/firefox/default.nix @@ -3,4 +3,8 @@ environment.systemPackages = with pkgs; [ firefox ]; + + environment.variables = { + MOZ_ENABLE_WAYLAND = 1; + }; } diff --git a/user/packages/freecad/default.nix b/user/packages/freecad/default.nix new file mode 100644 index 0000000..f9236a8 --- /dev/null +++ b/user/packages/freecad/default.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: { + environment.systemPackages = [ pkgs.freecad ]; +} diff --git a/user/packages/fzf/default.nix b/user/packages/fzf/default.nix new file mode 100644 index 0000000..7c74be6 --- /dev/null +++ b/user/packages/fzf/default.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + fzf + ]; + + environment.variables = { + FZF_ALT_C_OPTS = '' + --walker-skip .git,node_modules,target + --preview 'tree -C {}' + ''; + FZF_COMPLETION_OPTS = "--border --info=inline"; + FZF_COMPLETION_PATH_OPTS = "--walker file,dir,follow,hidden"; + FZF_COMPLETION_DIR_OPTS = "--walker dir,follow"; + }; +} diff --git a/user/packages/kdenlive/default.nix b/user/packages/kdenlive/default.nix index f955aa3..f34df14 100644 --- a/user/packages/kdenlive/default.nix +++ b/user/packages/kdenlive/default.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { environment.systemPackages = with pkgs; [ - kdenlive + kdePackages.kdenlive ]; } diff --git a/user/packages/kicad/default.nix b/user/packages/kicad/default.nix new file mode 100644 index 0000000..d0cbdc9 --- /dev/null +++ b/user/packages/kicad/default.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: { + environment.systemPackages = [ pkgs.kicad ]; +} diff --git a/user/packages/pandoc/default.nix b/user/packages/pandoc/default.nix new file mode 100644 index 0000000..c3aff43 --- /dev/null +++ b/user/packages/pandoc/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + pandoc + ]; +} diff --git a/user/packages/zoxide/default.nix b/user/packages/zoxide/default.nix new file mode 100644 index 0000000..231f77f --- /dev/null +++ b/user/packages/zoxide/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + zoxide + ]; +} diff --git a/user/profile.nix b/user/profile.nix deleted file mode 100644 index cf42340..0000000 --- a/user/profile.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ config, ... }: -{ - home.file.".profile".source = ./.profile; -} diff --git a/user/shell/bash.nix b/user/shell/bash.nix deleted file mode 100644 index 6d9c276..0000000 --- a/user/shell/bash.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ config, pkgs, ... }: -let - lsCmd = "eza -la --git -s type"; -in -{ - home.packages = with pkgs; [ - bash - ]; - - programs.bash = { - enable = true; - shellAliases = { - search-pkg = "nix search -I nixpkgs=flake:nixpkgs nixpkgs"; - newpkg = "bash ~/.dotfiles/newpkg.sh"; - rebuild = "sudo nixos-rebuild switch --flake '.#system'"; - update-flake = "nix flake update"; - l = lsCmd; - ls = lsCmd; - }; - bashrcExtra = '' - eval "$(fzf --bash)" - eval "$(zoxide init bash)" - ''; - }; -} diff --git a/user/userSettings.nix b/user/userSettings.nix new file mode 100644 index 0000000..f0baad5 --- /dev/null +++ b/user/userSettings.nix @@ -0,0 +1,5 @@ +{ + username = "kenryus"; + name = "Kenryu Shibata"; + email-dev = "kenryudev5894@gmail.com"; +} diff --git a/user/wrapped/alacritty/default.nix b/user/wrapped/alacritty/default.nix new file mode 100644 index 0000000..d7d85c3 --- /dev/null +++ b/user/wrapped/alacritty/default.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: +let + alacrittyconf = pkgs.writeText "alacritty.toml" '' + [window] + opacity = 0.85 + ''; +in + pkgs.symlinkJoin { + name = "alacritty-wrapped"; + paths = [ pkgs.alacritty ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/alacritty --add-flags "--config-file ${alacrittyconf}" + ''; + } diff --git a/user/wrapped/bash/default.nix b/user/wrapped/bash/default.nix new file mode 100644 index 0000000..4f4feea --- /dev/null +++ b/user/wrapped/bash/default.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: +let + lsCmd = "eza -la --git -s type"; + bashrc = pkgs.writeShellScript ".bashrc" '' + [[ $- == *i* ]] || return + + eval "$(fzf --bash)" + eval "$(zoxide init bash)" + + HISTFILESIZE=100000 + HISTSIZE=1000 + + alias cd=z + alias l="${lsCmd}" + alias ls="${lsCmd}" + alias update-flake="nix flake update" + + if [[ ! -v BASH_COMPLETION_VERSINFO ]]; then + . "${pkgs.bash-completion}/etc/profile.d/bash_completion.sh" + fi + ''; +in +pkgs.symlinkJoin { + name = "bash-wrapped"; + paths = with pkgs; [ bash bash-completion]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/bash --add-flags "--rcfile ${bashrc}" + ''; +} diff --git a/user/wrapped/default.nix b/user/wrapped/default.nix new file mode 100644 index 0000000..2c5e9e5 --- /dev/null +++ b/user/wrapped/default.nix @@ -0,0 +1,10 @@ +{ pkgs, config, ... }: +let + packages = { + alacritty = pkgs.callPackage ./alacritty {}; + bash = pkgs.callPackage ./bash {}; + }; +in +{ + environment.systemPackages = builtins.attrValues packages; +} diff --git a/user/wrapped/fish/config.fish b/user/wrapped/fish/config.fish new file mode 100644 index 0000000..e69de29 diff --git a/user/wrapped/fish/default.nix b/user/wrapped/fish/default.nix new file mode 100644 index 0000000..7b68d98 --- /dev/null +++ b/user/wrapped/fish/default.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: +let + fish_config = import fishinit diff --git a/user/wrapped/fish/fishinit.nix b/user/wrapped/fish/fishinit.nix new file mode 100644 index 0000000..32ca120 --- /dev/null +++ b/user/wrapped/fish/fishinit.nix @@ -0,0 +1,8 @@ +{ pkgs, aliasStr, ... }: + +pkgs.writeShellScriptBin "etc/fish/config.fish" '' + eval "$( ${pkgs.zoxide}/bin/zoxide init fish )" + ${pkgs.fzf}/bin/fzf --fish | source + + source ${./config.fish} +''