diff --git a/assets/Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4 b/assets/Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4 new file mode 100644 index 0000000..5e946ad Binary files /dev/null and b/assets/Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4 differ diff --git a/configuration.nix b/configuration.nix index 9912fbf..b279c19 100644 --- a/configuration.nix +++ b/configuration.nix @@ -2,9 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). -{ config -, lib -, pkgs +{ pkgs , ... }: @@ -80,8 +78,6 @@ ]; }; - programs.firefox.enable = true; - # List packages installed in system profile. # You can use https://search.nixos.org/ to find more packages (and options). environment.systemPackages = with pkgs; [ diff --git a/flake.lock b/flake.lock index 72ab592..530d4f6 100644 --- a/flake.lock +++ b/flake.lock @@ -301,6 +301,21 @@ "url": "https://flakehub.com/f/cachix/git-hooks.nix/0.1.941" } }, + "gnome-mobile": { + "locked": { + "lastModified": 1748795015, + "narHash": "sha256-+XyXaa3KmgOykQpo6k4XsEaHWDGj8inCxMMGOWat4EM=", + "owner": "chuangzhu", + "repo": "nixpkgs-gnome-mobile", + "rev": "825ebb10c8bf02cb4b6553f3b85e169dc92484d7", + "type": "github" + }, + "original": { + "owner": "chuangzhu", + "repo": "nixpkgs-gnome-mobile", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -338,21 +353,56 @@ "type": "github" } }, + "mobile-nixos": { + "flake": false, + "locked": { + "lastModified": 1741837934, + "narHash": "sha256-9GQyqCTAs9jShg0YdYsgWZalG3dwprkZK3vOHdoyeiE=", + "owner": "vlinkz", + "repo": "mobile-nixos", + "rev": "01db23f1cd3abfbd14dc06b983f336e74286730e", + "type": "github" + }, + "original": { + "owner": "vlinkz", + "ref": "sdm845-6.14", + "repo": "mobile-nixos", + "type": "github" + } + }, + "musnix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1756852730, + "narHash": "sha256-qPere4RBHoZxiEGl8zXU8gjroZg4gkYGEwaAbKmL4vE=", + "owner": "musnix", + "repo": "musnix", + "rev": "7ccc92050e43dc92309396c6f2fe1f542214a242", + "type": "github" + }, + "original": { + "owner": "musnix", + "repo": "musnix", + "type": "github" + } + }, "niri": { "inputs": { "niri-stable": "niri-stable", "niri-unstable": "niri-unstable", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nixpkgs-stable": "nixpkgs-stable", "xwayland-satellite-stable": "xwayland-satellite-stable", "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1757423134, - "narHash": "sha256-CZpxYEwjxLDdF1xGtrPJU2DX8k7Q5ajDBjBrjlEswik=", + "lastModified": 1757437545, + "narHash": "sha256-7ssbrFnmSrqtCtOySiu5ncyOBxPrR6p2nhNHrg6D+fo=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "11d325391d1bbb4bb8f49010959f54bb1f6038b4", + "rev": "ef694b996daeeb8684c0adfaa9b7067a6e709054", "type": "github" }, "original": { @@ -415,23 +465,34 @@ "url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A" } }, - "nix-index-db": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, + "nix-flatpak": { "locked": { - "lastModified": 1757218147, - "narHash": "sha256-IwOwN70HvoBNB2ckaROxcaCvj5NudNc52taPsv5wtLk=", - "owner": "Mic92", - "repo": "nix-index-database", - "rev": "9b144dc3ef6e42b888c4190e02746aab13b0e97f", + "lastModified": 1754777568, + "narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "62f636b87ef6050760a8cb325cadb90674d1e23e", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "nix-index-database", + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nix-mineral": { + "flake": false, + "locked": { + "lastModified": 1757365535, + "narHash": "sha256-s4YK7Ey2LJFLIAONWVXM3X+xdAIbjFgdK2s6lxmMIrQ=", + "owner": "cynicsketch", + "repo": "nix-mineral", + "rev": "b76cc19351f159cd360d8ceea3ba9aff8fce6c6e", + "type": "github" + }, + "original": { + "owner": "cynicsketch", + "repo": "nix-mineral", "type": "github" } }, @@ -523,11 +584,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1757341549, - "narHash": "sha256-fRnT+bwP1sB6ne7BLw4aXkVYjr+QCZZ+e4MhbokHyd4=", + "lastModified": 1757408970, + "narHash": "sha256-aSgK4BLNFFGvDTNKPeB28lVXYqVn8RdyXDNAvgGq+k0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9d1fa9fa266631335618373f8faad570df6f9ede", + "rev": "d179d77c139e0a3f5c416477f7747e9d6b7ec315", "type": "github" }, "original": { @@ -566,6 +627,22 @@ } }, "nixpkgs_4": { + "locked": { + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1757347588, "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", @@ -581,7 +658,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1757347588, "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", @@ -622,37 +699,20 @@ "type": "github" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1756981260, - "narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=", - "ref": "refs/heads/master", - "rev": "6eb12551baf924f8fdecdd04113863a754259c34", - "revCount": 672, - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - } - }, "root": { "inputs": { "c3d2-user-module": "c3d2-user-module", "comin": "comin", "determinate": "determinate", + "gnome-mobile": "gnome-mobile", "home-manager": "home-manager", + "mobile-nixos": "mobile-nixos", + "musnix": "musnix", "niri": "niri", - "nix-index-db": "nix-index-db", + "nix-flatpak": "nix-flatpak", + "nix-mineral": "nix-mineral", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_5", - "quickshell": "quickshell", + "nixpkgs": "nixpkgs_6", "stylix": "stylix", "treefmt-nix": "treefmt-nix" } diff --git a/flake.nix b/flake.nix index 486c9ef..cddae1c 100644 --- a/flake.nix +++ b/flake.nix @@ -15,14 +15,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*"; - nix-index-db = { - url = "github:Mic92/nix-index-database"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - quickshell = { - url = "git+https://git.outfoxxed.me/quickshell/quickshell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; comin = { url = "github:nlewo/comin"; inputs.nixpkgs.follows = "nixpkgs"; @@ -31,10 +23,17 @@ url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; - firefox-addons = { - url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; - inputs.nixpkgs.follows = "nixpkgs"; + musnix.url = "github:musnix/musnix"; + nix-mineral = { + url = "github:cynicsketch/nix-mineral"; + flake = false; }; + mobile-nixos = { + url = "github:vlinkz/mobile-nixos/sdm845-6.14"; + flake = false; + }; + gnome-mobile.url = "github:chuangzhu/nixpkgs-gnome-mobile"; + nix-flatpak.url = "github:gmodena/nix-flatpak"; }; outputs = @@ -47,14 +46,18 @@ nixos-hardware, treefmt-nix, determinate, - nix-index-db, - quickshell, stylix, comin, + musnix, + nix-mineral, + mobile-nixos, + gnome-mobile, + nix-flatpak, }: let system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { inherit system; }; + lib = pkgs.lib; # Configure treefmt treefmtEval = treefmt-nix.lib.evalModule pkgs { @@ -87,59 +90,156 @@ }; in { - packages.${system}.wallpaper = pkgs.stdenv.mkDerivation { - name = "wallpaper"; - src = ./assets/wp6553608.jpg; - dontUnpack = true; + packages.${system} = { + hello-kitty-cursors = pkgs.stdenv.mkDerivation { + pname = "hello-kitty-cursors"; + version = "1.0.0"; - installPhase = '' - mkdir -p $out - cp $src $out/wallpaper.jpg - ''; - }; - nixosConfigurations.p50 = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - system = "x86_64-linux"; - modules = [ - niri.nixosModules.niri - nixos-hardware.nixosModules.lenovo-thinkpad-p50 - ./configuration.nix - determinate.nixosModules.default - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.backupFileExtension = "backup"; - home-manager.users.lucy = - { - config, - pkgs, - lib, - inputs, - ... - }: - { - imports = [ - ./modules/home.nix - ]; + src = pkgs.fetchzip { + url = "https://www.rw-designer.com/cursor-downloadset/hello-kitty.zip"; + sha256 = "sha256-p4US/gftDL0ne4l0dHUIKKZy2oibkOqdJ3fMisySnNM="; # Replace with the actual hash of the zip file + stripRoot = false; + }; - # Configure dconf settings here or inside home.nix - # Example: - # home.sessionVariables = { - # XDG_CURRENT_DESKTOP = "GNOME"; - # }; - }; - } - c3d2-user-module.nixosModule - ./modules/nix.nix - ./modules/fonts.nix - comin.nixosModules.comin - ./modules/comin.nix - stylix.nixosModules.stylix - ./modules/stylix.nix - ]; + installPhase = '' + mkdir -p $out/share/icons/HelloKitty + for file in ${self}/cursors/*; do + if [ -e "$file" ]; then + cp "$file" "$out/share/icons/HelloKitty/" + else + echo "Warning: File $file does not exist." + fi + done + + # Adjust the path to index.theme if necessary + if [ -e "${self}/index.theme" ]; then + cp "${self}/index.theme" "$out/share/icons/HelloKitty/" + else + echo "Warning: index.theme does not exist." + fi + ''; + + meta = with nixpkgs.lib; { + description = "Hello Kitty Cursor theme"; + homepage = "https://www.rw-designer.com/cursor-downloadset/hello-kitty.zip"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ your-maintainer-name ]; # Replace with your name + }; + }; + + wallpapers = pkgs.stdenv.mkDerivation { + name = "wallpapers"; + src = ./assets; + + buildInputs = with pkgs; [ ffmpeg ]; + + buildPhase = '' + # Create output directory + mkdir -p $out/share/wallpapers + + # Copy static wallpaper + cp "wp6553608.jpg" "$out/share/wallpapers/static-wallpaper.jpg" + + # Copy original animated wallpaper + cp "Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4" \ + "$out/share/wallpapers/anime-cat-girl-snow.mp4" + + # Create optimized version + ${pkgs.ffmpeg}/bin/ffmpeg -i "Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4" \ + -vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080" \ + -r 30 -c:v libx264 -crf 28 -preset medium \ + -t 30 -an "$out/share/wallpapers/anime-cat-girl-snow-optimized.mp4" + ''; + + installPhase = '' + # Files are already in the right place from buildPhase + echo "Wallpapers installed to $out/share/wallpapers" + ''; + + meta = with lib; { + description = "Personal wallpaper collection"; + platforms = platforms.linux; + }; + }; }; + nixosConfigurations = { + cutie = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + ./hosts/cutie/configuration.nix + gnome-mobile.nixosModules.gnome-mobile + nix-flatpak.nixosModules.nix-flatpak + (import "${mobile-nixos}/lib/configuration.nix" { + device = "oneplus-fajita"; + }) + ]; + }; + p50 = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + system = "x86_64-linux"; + modules = [ + "${nix-mineral}/nix-mineral.nix" + niri.nixosModules.niri + nixos-hardware.nixosModules.lenovo-thinkpad-p50 + ./hosts/p50/configuration.nix + determinate.nixosModules.default + musnix.nixosModules.musnix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.backupFileExtension = "backup"; + home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.users.lucy = + { + pkgs, + inputs, + ... + }: + { + imports = [ + ./modules/home.nix + ./modules/bottom.nix + ./modules/htop.nix + ]; + + home.packages = with pkgs; [ + inputs.self.packages.${pkgs.system}.wallpapers + ]; + + home.file = { + ".local/share/wallpapers/anime-cat-girl-snow.mp4".source = "${ + inputs.self.packages.${pkgs.system}.wallpapers + }/share/wallpapers/anime-cat-girl-snow.mp4"; + ".local/share/wallpapers/static-wallpaper.jpg".source = "${ + inputs.self.packages.${pkgs.system}.wallpapers + }/share/wallpapers/static-wallpaper.jpg"; + ".local/share/wallpapers/anime-cat-girl-snow-optimized.mp4".source = "${ + inputs.self.packages.${pkgs.system}.wallpapers + }/share/wallpapers/anime-cat-girl-snow-optimized.mp4"; + }; + }; + } + c3d2-user-module.nixosModule + ./modules/nix.nix + ./modules/fonts.nix + comin.nixosModules.comin + ./modules/comin.nix + stylix.nixosModules.stylix + ./modules/stylix.nix + ./modules/firefox-nixos.nix + ]; + }; + }; + + fajita-fastboot-images = + inputs.self.nixosConfigurations.fajita.config.mobile.outputs.android.android-fastboot-images; + fajita-minimal-image = + inputs.self.nixosConfigurations.fajita_minimal.config.mobile.outputs.android.android-fastboot-images; + uefi-x86_64-image = inputs.self.nixosConfigurations.uefi-x86_64.config.mobile.outputs.default; + # Add treefmt formatter formatter.${system} = treefmtEval.config.build.wrapper; diff --git a/hardware-configuration.nix b/hardware-configuration.nix index 7733ebc..1dd25df 100644 --- a/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -1,7 +1,7 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ config, lib, modulesPath, ... }: { imports = diff --git a/hosts/cutie/configuration.nix b/hosts/cutie/configuration.nix new file mode 100644 index 0000000..70e8167 --- /dev/null +++ b/hosts/cutie/configuration.nix @@ -0,0 +1,42 @@ +{ lib, pkgs, ... }: +{ + services.flatpak.remotes = [ + { + name = "flathub"; + location = "https://flathub.org/repo/flathub.flatpakrepo"; + } + ]; + + mobile.beautification = { + silentBoot = false; + splash = false; + }; + + users.users.lucy = { + isNormalUser = true; + hashedPassword = "$y$j9T$D1EpjBC8amO7RbwfitIHW.$qZeydQSBI0dzCm7TVUmJ4ZDzBQMMNVG6NUiTpa45XVA"; + extraGroups = [ + "dialout" + "feedbackd" + "networkmanager" + "video" + "wheel" + ]; + }; + + environment.systemPackages = with pkgs; [ + fractal + mission-center + ]; + environment.sessionVariables.NIXPKGS_ALLOW_UNFREE = "1"; + + zramSwap.enable = true; + networking.firewall.enable = lib.mkForce false; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + system.stateVersion = "24.11"; +} diff --git a/hosts/p50/configuration.nix b/hosts/p50/configuration.nix new file mode 100644 index 0000000..b279c19 --- /dev/null +++ b/hosts/p50/configuration.nix @@ -0,0 +1,133 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ pkgs +, ... +}: + +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "twinkpad"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n.defaultLocale = "en_US.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # useXkbConfig = true; # use xkb.options in tty. + # }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + programs.niri.enable = true; + + # Configure keymap in X11 + # services.xserver.xkb.layout = "us"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound. + # services.pulseaudio.enable = true; + # OR + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + + }; + + # make pipewire realtime-capable + security.rtkit.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.mutableUsers = false; + users.users.lucy = { + initialHashedPassword = "$6$QX95LTUGi55mFQOZ$j19/LuGvMeWOBCp/oEOLWDU5rcrEfD9/2AQ3sW1OVMROMJEFpg/hTrWKnOgIUfzWtF32wUxNlThXIJm8YWJwZ."; + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + tree + ]; + }; + + # List packages installed in system profile. + # You can use https://search.nixos.org/ to find more packages (and options). + environment.systemPackages = with pkgs; [ + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + programs.mtr.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "25.05"; # Did you read the comment? + + nixpkgs.config.allowUnfree = true; + +} diff --git a/hosts/p50/hardware-configuration.nix b/hosts/p50/hardware-configuration.nix new file mode 100644 index 0000000..1dd25df --- /dev/null +++ b/hosts/p50/hardware-configuration.nix @@ -0,0 +1,65 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, modulesPath, ... }: + +{ + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "uas" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "none"; + fsType = "tmpfs"; + options = [ "defaults" "size=8G" "mode=755" ]; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/0777-71C3"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/nix" = + { + device = "/dev/disk/by-uuid/3a8c6986-3105-4f1f-a75b-f72e4ec5ecdc"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."nix".device = "/dev/disk/by-uuid/439beee9-6797-41bc-bc4f-01bfe1a75166"; + + fileSystems."/etc/nixos" = + { + device = "/nix/persist/etc/nixos"; + fsType = "none"; + options = [ "bind" ]; + }; + + fileSystems."/var/log" = + { + device = "/nix/persist/var/log"; + fsType = "none"; + options = [ "bind" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/alacritty.nix b/modules/alacritty.nix index 5004083..6b127fe 100644 --- a/modules/alacritty.nix +++ b/modules/alacritty.nix @@ -2,36 +2,34 @@ { programs.alacritty.enable = true; programs.alacritty.settings = { - window.opacity = lib.mkDefault 0.8; - /* - colors.bright = { - black = "#444b6a"; - blue = "#7da6ff"; - cyan = "#0db9d7"; - green = "#b9f27c"; - magenta = "#bb9af7"; - red = "#ff7a93"; - white = "#acb0d0"; - yellow = "#ff9e64"; - }; - colors.normal = { - black = "#32344a"; - blue = "#7aa2f7"; - cyan = "#449dab"; - green = "#9ece6a"; - magenta = "#ad8ee6"; - red = "#f7768e"; - white = "#787c99"; - yellow = "#e0af68"; - }; - colors.primary = { - background = "#1a1b26"; - foreground = "#a9b1d6"; - }; - */ - font = { + window.opacity = lib.mkForce 0.8; + colors.bright = lib.mkForce { + black = "#444b6a"; + blue = "#7da6ff"; + cyan = "#0db9d7"; + green = "#b9f27c"; + magenta = "#bb9af7"; + red = "#ff7a93"; + white = "#acb0d0"; + yellow = "#ff9e64"; + }; + colors.normal = lib.mkForce { + black = "#32344a"; + blue = "#7aa2f7"; + cyan = "#449dab"; + green = "#9ece6a"; + magenta = "#ad8ee6"; + red = "#f7768e"; + white = "#787c99"; + yellow = "#e0af68"; + }; + colors.primary = lib.mkForce { + background = "#1a1b26"; + foreground = "#a9b1d6"; + }; + font = lib.mkForce { normal = { - family = lib.mkForce "Iosevka"; + family = "Iosevka"; style = "Regular"; }; bold = { diff --git a/modules/bottom.nix b/modules/bottom.nix new file mode 100644 index 0000000..6bc27e3 --- /dev/null +++ b/modules/bottom.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.bottom.enable = true; +} diff --git a/modules/firefox-nixos.nix b/modules/firefox-nixos.nix new file mode 100644 index 0000000..dca6a2f --- /dev/null +++ b/modules/firefox-nixos.nix @@ -0,0 +1,23 @@ +{ ... }: +{ + programs.firefox = { + policies.ExtensionSettings = { + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + installation_mode = "force_installed"; + }; + "jid1-MnnxcxisBPnSXQ@jetpack" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi"; + installation_mode = "force_installed"; + }; + "extension@tabliss.io" = { + install_url = "https://addons.mozilla.org/firefox/downloads/file/3940751/tabliss-2.6.0.xpi"; + installation_mode = "force_installed"; + }; + }; + }; +} diff --git a/modules/firefox.nix b/modules/firefox.nix new file mode 100644 index 0000000..d53f931 --- /dev/null +++ b/modules/firefox.nix @@ -0,0 +1,119 @@ +{ ... }: + +{ + programs.firefox = { + enable = true; + + policies = { + AutofillAddressEnabled = false; + AutofillCreditCardEnabled = false; + BlockAboutAddons = true; + BlockAboutConfig = true; + BlockAboutProfiles = true; + Bookmarks = [ + { + Placement = "toolbar"; + Title = "NixOS Search"; + URL = "https://search.nixos.org"; + } + { + Placement = "toolbar"; + Title = "NixOS Wiki"; + URL = "https://wiki.nixos.org"; + } + { + Placement = "toolbar"; + Title = "c-base"; + URL = "https://c-base.org"; + } + { + Placement = "toolbar"; + Title = "c-base Wiki"; + URL = "https://wiki.c-base.org"; + } + ]; + Cookies = { + Behavior = "accept"; + BehaviorPrivateBrowsing = "reject"; + }; + DisableAccounts = true; + DisableAppUpdate = true; + DisableBuiltinPDFViewer = true; + DisableFeedbackCommands = true; + DisableFirefoxScreenshots = true; + DisableFirefoxStudies = true; + DisableForgetButton = true; + DisableFormHistory = true; + DisablePasswordReveal = true; + DisableProfileImport = true; + DisableProfileRefresh = true; + DisableSetDesktopBackground = true; + DisableTelemetry = true; + EnableTrackingProtection = { + BaselineExceptions = true; + Category = "standard"; + ConvenienceExceptions = true; + Cryptomining = true; + EmailTracking = true; + Fingerprinting = true; + SuspectedFingerprinting = true; + Value = true; + }; + ExtensionUpdate = false; + FirefoxSuggest = { + ImproveSuggest = false; + SponsoredSuggestions = false; + WebSuggestions = true; + }; + HardwareAcceleration = false; + NewTabPage = true; + PasswordManagerEnabled = false; + PictureInPicture = { + Enabled = true; + }; + Preferences = { + browser.fixup.dns_first_for_single_words = { + Status = "locked"; + Type = "boolean"; + Value = true; + }; + browser.search.update = { + Status = "locked"; + Type = "boolean"; + Value = true; + }; + extensions.getAddons.showPane = { + Status = "locked"; + Type = "boolean"; + Value = false; + }; + media.gmp-gmpopenh264.enabled = { + Status = "locked"; + Type = "boolean"; + Value = true; + }; + network.IDN_show_punycode = { + Status = "locked"; + Type = "boolean"; + Value = true; + }; + network.dns.disableIPv6 = { + Status = "locked"; + Type = "boolean"; + Value = false; + }; + }; + PrintingEnabled = true; + PrivateBrowsingModeAvailability = 0; + SanitizeOnShutdown = { + Cache = true; + Cookies = false; + FormData = false; + History = false; + Sessions = false; + SiteSettings = false; + }; + TranslateEnabled = false; + }; + }; +} diff --git a/modules/home.nix b/modules/home.nix index abe342d..8b3f772 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -1,7 +1,6 @@ { config, pkgs, - inputs, ... }: { @@ -15,6 +14,9 @@ ./hypridle.nix ./fuzzel.nix ./hyfetch.nix + ./ssh.nix + ./firefox.nix + ./wallpaper.nix ]; # TODO please change the username & home directory to your own @@ -123,6 +125,10 @@ seatd jaq wl-clipboard + element-desktop + jetbrains.idea-community + jdk + gradle ]; # basic configuration of git, please change to your own programs.git = { diff --git a/modules/htop.nix b/modules/htop.nix new file mode 100644 index 0000000..6f267d8 --- /dev/null +++ b/modules/htop.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.htop.enable = true; +} diff --git a/modules/hyfetch.nix b/modules/hyfetch.nix index 28dc4e9..2ef09bd 100644 --- a/modules/hyfetch.nix +++ b/modules/hyfetch.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { programs.hyfetch = { enable = true; diff --git a/modules/hypridle.nix b/modules/hypridle.nix index 706aa59..9e1df6a 100644 --- a/modules/hypridle.nix +++ b/modules/hypridle.nix @@ -1,8 +1,7 @@ -{ - pkgs, - lib, - config, - ... +{ pkgs +, lib +, config +, ... }: let lock = "${pkgs.systemd}/bin/loginctl lock-session"; diff --git a/modules/music.nix b/modules/music.nix new file mode 100644 index 0000000..35e389c --- /dev/null +++ b/modules/music.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + musnix.enable = true; +} diff --git a/modules/niri/binds.nix b/modules/niri/binds.nix index 9eacae5..922a7d8 100644 --- a/modules/niri/binds.nix +++ b/modules/niri/binds.nix @@ -10,7 +10,6 @@ let close-window maximize-column screenshot-window - screenshot focus-column-left focus-column-right focus-workspace-up @@ -34,10 +33,11 @@ let # Generate workspace focus binds (Mod+1 to Mod+9) wsBinds = builtins.listToAttrs ( - builtins.genList (i: { - name = "Mod+${toString (i + 1)}"; - value.action.focus-workspace = i + 1; - }) 9 + builtins.genList + (i: { + name = "Mod+${toString (i + 1)}"; + value.action.focus-workspace = i + 1; + }) 9 ); in diff --git a/modules/niri/default.nix b/modules/niri/default.nix index 9687634..d01b7d0 100644 --- a/modules/niri/default.nix +++ b/modules/niri/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, ... }: +{ ... }: { imports = [ ./settings.nix diff --git a/modules/niri/settings.nix b/modules/niri/settings.nix index 43b7521..9feb7db 100644 --- a/modules/niri/settings.nix +++ b/modules/niri/settings.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ lib +, pkgs +, inputs +, ... }: let makeCommand = command: { @@ -10,9 +9,17 @@ let }; qs = "${pkgs.quickshell}/bin/qs"; wl-paste = "${pkgs.wl-clipboard}/bin/wl-paste"; + wallpapers = inputs.self.packages.${pkgs.system}.wallpapers; + in { programs.niri.settings = { + cursor = { + theme = "Hello-Kitty"; # Set the cursor theme + size = 48; # Set the cursor size in logical pixels + hide-after-inactive-ms = 1000; # Hide cursor after 1 second of inactivity + hide-when-typing = true; # Hide cursor when typing + }; environment = { CLUTTER_BACKEND = "wayland"; DISPLAY = ":0"; @@ -23,9 +30,17 @@ in QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; SDL_VIDEODRIVER = "wayland"; }; + spawn-at-startup = [ (makeCommand "${lib.getExe pkgs.hyprlock}") - (makeCommand "${pkgs.swww}/bin/swww-daemon") + { + command = [ + "${lib.getExe pkgs.mpvpaper}" + "-vs" + "-o" + "'no-audio loop' ALL ${wallpapers}/share/wallpapers/*.mp4" + ]; + } { command = [ "${wl-paste}" @@ -51,7 +66,6 @@ in ]; } ]; - input = { touchpad = { click-method = "button-areas"; diff --git a/modules/nix.nix b/modules/nix.nix index 05abfad..217c17a 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -1,8 +1,18 @@ -{ ... }: { +{ ... }: +{ nix.settings = { - experimental-features = [ "nix-command" "flakes" ]; + experimental-features = [ + "nix-command" + "flakes" + ]; - substituters = [ "https://nix-gaming.cachix.org" ]; - trusted-public-keys = [ "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" ]; + substituters = [ + "https://nix-gaming.cachix.org" + "https://attic.mildlyfunctional.gay/nixbsd" + ]; + trusted-public-keys = [ + "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" + "nixbsd:gwcQlsUONBLrrGCOdEboIAeFq9eLaDqfhfXmHZs1mgc=" + ]; }; } diff --git a/modules/nushell.nix b/modules/nushell.nix index 9385c31..e682a5b 100644 --- a/modules/nushell.nix +++ b/modules/nushell.nix @@ -1,10 +1,15 @@ -{ lib, pkgs, ... }: { +{ lib, pkgs, ... }: +let + hx = lib.getExe pkgs.helix; + nix = lib.getExe pkgs.nix; +in +{ programs = { nushell = { enable = true; # The config.nu can be anywhere you want if you like to edit your Nushell with Nu #configFile.source = ./.../config.nu; - # for editing directly to config.nu + # for editing directly to config.nu extraConfig = '' # Common ls aliases and sort them by type and then name # Inspired by https://github.com/nushell/nushell/issues/7190 @@ -31,9 +36,7 @@ # fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer let fish_completer = {|spans| - ${ - lib.getExe pkgs.fish - } --command $'complete "--do-complete=($spans | str join " ")"' + ${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans | str join " ")"' | $"value(char tab)description(char newline)" + $in | from tsv --flexible --no-infer } @@ -92,22 +95,23 @@ shellAliases = { fg = "job unfreeze"; - nano = "hx"; - vi = "hx"; - nvim = "hx"; - vim = "hx"; - devenv-init = "nix flake init --template github:cachix/devenv"; - devenv-enter = "nix develop --impure"; - rust-init = "nix flake init --template templates#rust"; - c-init = "nix flake init --template templates#c-hello"; - go-hello = "nix flake init --template templates#go-hello"; - haskell-hello = "nix flake init --template templates#haskell-hello"; - neofetch = "hyfetch"; + nano = hx; + vi = hx; + devenv-init = "${nix} flake init --template github:cachix/devenv"; + devenv-enter = "${nix} develop --impure"; + rust-init = "${nix} flake init --template templates#rust"; + c-init = "${nix} flake init --template templates#c-hello"; + go-hello = "${nix} flake init --template templates#go-hello"; + haskell-hello = "${nix} flake init --template templates#haskell-hello"; + g = "${lib.getExe pkgs.git}"; + copy = "${pkgs.wl-clipboard}/bin/wl-copy"; }; }; carapace.enable = true; carapace.enableNushellIntegration = true; - starship = { enable = true; }; + starship = { + enable = true; + }; }; } diff --git a/modules/quickshell.nix b/modules/quickshell.nix index 46d9d4b..c8b428f 100644 --- a/modules/quickshell.nix +++ b/modules/quickshell.nix @@ -1,8 +1,7 @@ -{ - pkgs, - inputs, - lib, - ... +{ pkgs +, inputs +, lib +, ... }: let quickshell = inputs.quickshell.packages.${pkgs.system}.default; diff --git a/modules/ssh.nix b/modules/ssh.nix new file mode 100644 index 0000000..4b6b458 --- /dev/null +++ b/modules/ssh.nix @@ -0,0 +1,35 @@ +{ ... +}: + +let + mkMatchBlock = + { hostname }: + { + inherit hostname; + user = "lucy"; # Use dynamically retrieved user + identityFile = [ + "/nix/persist/etc/ssh/id_ed25519" + ]; + port = 22; + }; +in + +{ + # Enable SSH client in Home Manager + programs.ssh = { + enable = true; + + # Define host-specific SSH configurations (match blocks) + matchBlocks = { + "shell.c-base.org" = mkMatchBlock { hostname = "shell.c-base.org"; }; + "code.c-base.org" = mkMatchBlock { hostname = "code.c-base.org"; }; + }; + + # Any extra SSH configuration options you want globally + extraConfig = '' + # Example of global settings + Compression yes + ServerAliveInterval 60 + ''; + }; +} diff --git a/modules/wallpaper.nix b/modules/wallpaper.nix new file mode 100644 index 0000000..dbc0594 --- /dev/null +++ b/modules/wallpaper.nix @@ -0,0 +1,10 @@ +{ pkgs +, inputs +, ... +}: + +{ + programs.mpvpaper = { + enable = true; + }; +} diff --git a/modules/waybar.nix b/modules/waybar.nix index c66cd7c..ce9cf47 100644 --- a/modules/waybar.nix +++ b/modules/waybar.nix @@ -1,119 +1,443 @@ { + config, + pkgs, + ... +}: +{ + home.packages = with pkgs; [ waybar ]; + programs.waybar = { enable = true; - settings = { mainBar = { layer = "top"; - position = "top"; - height = 28; - output = [ "eDP-1" ]; - margin = "10 20"; - - modules-left = [ + "modules-left" = [ "niri/workspaces" - "custom/catgirl-status" + "hyprland/window" ]; - modules-center = [ "sway/window" ]; - modules-right = [ - "battery" - "network" - "clock" + "modules-center" = [ "clock" ]; + "modules-right" = [ + "tray" + "cpu" + "memory" + "idle_inhibitor" + "pulseaudio" + "bluetooth" ]; - - # Catgirl status placeholder - "custom/catgirl-status" = { - interval = 10; - exec = '' - echo "" - ''; - format = "{}"; - max-length = 40; - tooltip = false; + "hyprland/window" = { + format = "{title}"; + "max-length" = 333; + "seperate-outputs" = true; }; - - # Workspaces with numbers instead of icons - "niri/workspaces" = { - all-outputs = true; - disable-click = false; - format = "{name}"; - disable-markup = false; - max-length = 6; - }; - - battery = { - format = "🔋 {capacity}%"; - low = 20; - critical = 10; - format-low = "⚠️ {capacity}%"; - format-critical = "🚨 {capacity}%"; - tooltip = true; - }; - - network = { - interface = "wlan0"; - format-connected = "📶 {essid}"; - format-disconnected = "📡 disconnected"; - tooltip = true; - }; - clock = { - format = "{:%a %b %d, %H:%M}"; - tooltip = false; + format = "{:%I:%M %a %d}"; + "tooltip-format" = "{calendar}"; + calendar = { + mode = "month"; + "mode-mon-col" = 3; + "on-scroll" = 1; + "on-click-right" = "mode"; + format = { + months = "{}"; + days = "{}"; + weeks = "{%W}"; + weekdays = "{}"; + today = "{}"; + }; + }; + actions = { + "on-click-middle" = "mode"; + "on-click-right" = "shift_up"; + "on-click" = "shift_down"; + }; + }; + cpu = { + format = "󰯳 {usage}%"; + }; + memory = { + format = "󰍛 {}%"; + interval = 1; + }; + "custom/gpu-util" = { + exec = "./scripts/gpu-util"; + format = "󰯿 {}"; + interval = 1; + }; + "custom/gpu-temp" = { + exec = "./scripts/gpu-temp"; + format = " {}"; + interval = 1; + }; + temperature = { + "hwmon-path" = "/sys/class/hwmon/hwmon1/temp1_input"; + "critical-threshold" = 80; + format = " {temperatureC}°C"; + interval = 1; + }; + "niri/workspaces" = { + format = "{icon}"; + "active-only" = false; + "sort-by-number" = true; + "on-click" = "activate"; + "all-outputs" = false; + "format-icons" = { + "1" = "1"; + "2" = "2"; + "3" = "3"; + "4" = "4"; + "5" = "5"; + "6" = "6"; + "7" = "7"; + "8" = "8"; + "9" = "9"; + "10" = "10"; + }; + }; + network = { + format = "󰤭 Off"; + "format-wifi" = "{essid} ({signalStrength}%)"; + "format-ethernet" = "󰈀"; + "format-disconnected" = "󰤭 Disconnected"; + "tooltip-format" = "{ifname} via {gwaddr} "; + "tooltip-format-wifi" = "{essid}({signalStrength}%)  "; + "tooltip-format-ethernet" = "󰈀 {ifname}"; + "tooltip-format-disconnected" = "Disconnected"; + }; + pulseaudio = { + format = "{icon} {volume}% {format_source}"; + "format-bluetooth" = "{icon} {volume}% {format_source}"; + "format-bluetooth-muted" = "󰖁 {format_source}"; + "format-muted" = "󰖁 {format_source}"; + "format-source" = " {volume}%"; + "format-source-muted" = ""; + "format-icons" = { + headphone = ""; + phone = ""; + portable = ""; + default = [ + "" + "" + "" + ]; + }; + "on-click-left" = "pavucontrol"; + input = true; + }; + "custom/playerctl" = { + format = "{icon} {}"; + "return-type" = "json"; + "max-length" = 333; + exec = "playerctl -a metadata --format '{\"text\": \"{{artist}} ~ {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F"; + "on-click-middle" = "playerctl play-pause"; + "on-click" = "playerctl previous"; + "on-click-right" = "playerctl next"; + "format-icons" = { + Playing = ""; + Paused = ""; + }; + }; + tray = { + format = "{icon}"; + "icon-size" = 14; + spacing = 5; + }; + idle_inhibitor = { + format = "{icon}"; + "format-icons" = { + activated = "󱠛"; + deactivated = "󱤱"; + }; + }; + "custom/subs" = { + format = "󰗃 {}"; + exec = "/usr/local/bin/subsfile.sh"; + "on-click" = "vivaldi-stable https://youtube.com/thelinuxcast"; + "restart-interval" = 1; + }; + "custom/spacer" = { + format = " "; + }; + "wlr/taskbar" = { + format = "{name}"; + "icon-size" = 14; + "icon-theme" = "Numix-Circle"; + "tooltip-format" = "{title}"; + "on-click" = "activate"; + "on-click-middle" = "close"; + "ignore-list" = [ "Alacritty" ]; + "app_ids-mapping" = { + firefoxdeveloperedition = "firefox-developer-edition"; + }; + rewrite = { + "Firefox Web Browser" = "Firefox"; + "Foot Server" = "Terminal"; + }; + }; + bluetooth = { + "on-click" = "./scripts/bluetooth-control"; + "on-click-right" = "./scripts/rofi-bluetooth"; + "on-click-middle" = "./scripts/rofi-bluetooth"; + format = "{icon}"; + interval = 15; + "format-icons" = { + on = ""; + off = "󰂲"; + disabled = "󰂲"; + connected = ""; + }; + "tooltip-format" = "{device_alias} {status}"; }; }; }; - style = '' + @define-color bg #${config.stylix.base16Scheme.base00}; + @define-color fg #${config.stylix.base16Scheme.base05}; + @define-color lbg #${config.stylix.base16Scheme.base01}; + @define-color yellow #${config.stylix.base16Scheme.base0A}; + @define-color lavender #${config.stylix.base16Scheme.base0E}; + @define-color peach #${config.stylix.base16Scheme.base0A}; + @define-color red #${config.stylix.base16Scheme.base08}; + @define-color green #${config.stylix.base16Scheme.base0B}; + @define-color blue #${config.stylix.base16Scheme.base0D}; + @define-color border #${config.stylix.base16Scheme.base02}; + * { - font-family: "Comic Mono", "Fira Mono", monospace; - border-radius: 12px; - font-weight: 600; - padding: 5px 15px; + min-height: 0; + margin: 0px 0px 0px 0px; + padding: 0; + border-radius: 7px; + font-family: "JetBrains Mono Nerd Font"; + font-size: 14pt; + font-weight: 700; + padding-bottom: 0px; + } + + tooltip { + background: @bg; + border-radius: 7px; + border: 2px solid @border; + } + + #window { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 7px; + border-radius: 3px; + border-color: @lbg; + background-color: @yellow; + color: @bg; + } + + window#waybar.empty #window { + background-color: @bg; + border-bottom: none; + border-right: none; } window#waybar { - background-color: #3A3A58; - color: #FF69B4; - border: 2px solid #FF69B4; - box-shadow: 0 0 15px #FF69B4AA; + background-color: @bg; + color: @lavender; + } + + /* Workspaces */ + @keyframes button_activate { + from { opacity: .3 } + to { opacity: 1.; } + } + + #workspaces { + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding: 1px; + background-color: @bg; + color: @bg; } #workspaces button { - background-color: #FF69B4; - color: #3A3A58; - margin: 0 3px; - border-radius: 8px; - padding: 3px 10px; - transition: background-color 0.2s ease; - font-family: "Fira Mono", monospace; - } - - #workspaces button:hover { - background-color: #FFB6C1; - color: #1A1A2E; + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding-left: 3px; + padding-right: 9px; + background-color: @bg; + color: @fg; } #workspaces button.active { - background-color: #FF69B4; - color: #FFF0F5; - font-weight: bold; + background-color:@blue; + color: @bg; + } + + #workspaces button.urgent { + color: #F38BA8; + } + + #workspaces button:hover { + border: solid transparent; + } + + #custom-gpu-util { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 7px; + background-color: @bg; + color: @fg; + } + + #tray { + margin: 0px 0px 0px 0px; + border-radius: 3px; + padding-left: 10px; + padding-right: 10px; + background-color: @bg; + color: @fg; + } + + #idle_inhibitor { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + background-color: @bg; + color: @fg; + } + + #network { + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 7px; + background-color: @bg; + color: @lavender; + } + + #network.linked { + color: @peach; + } + #network.disconnected, + #network.disabled { + color: @red; + } + + #custom-subs { + color: @fg; + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + border-bottom: 2px solid @bg; + border-right: 2px solid @bg; + border-color: @lbg; + background-color: @red; + } + + #custom-spacer { + background-color: @yellow; + } + + #custom-cliphist { + color: @peach; + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 12px; + border-radius: 3px; + background-color: @bg; + } + + #custom-gpu-temp, + #cpu, + #memory, + #custom-clipboard, + #temperature { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @fg; + background-color: @bg; + } + + #custom-playerctl { + margin: 5px 5px 2px 5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @fg; + background-color: @bg; + } + + #battery, + #backlight, + #bluetooth, + #pulseaudio { + margin-top: 5px; + margin-bottom: 2px; + color: @fg; + background-color: @bg; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } + + #battery, + #bluetooth { + margin-left: 0px; + margin-right: 5px; + padding-left: 7.5px; + padding-right: 10px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } + + #backlight, + #pulseaudio { + margin-right: 0px; + margin-left: 5px; + padding-left: 10px; + padding-right: 7.5px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; } #clock { - font-style: italic; - color: #FFC0CB; + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + color: @bg; + background-color: @green; } - #battery, #network { - color: #FFB6C1; + #taskbar { + border-radius: 0px 0px 0px 0; + padding: 0 3px; + margin: 0 0px; + color: #ffffff; + background-color: rgba(120,118,117,0.3); + } + #taskbar button { + border-radius: 0px 0px 0px 0px; + padding: 0 0 0 3px; + margin: 3px 1; + color: #ffffff; + background-color: rgba(120,118,117,0.1); + } + #taskbar button.active { + background-color: rgba(120,118,117,0.8); } - #custom-catgirl-status { - font-size: 1.1em; - color: #FF69B4; - font-weight: bold; - font-family: "Comic Mono", monospace; + #mode { + margin: 0px 0px 0px 0px; + padding-left: 10px; + padding-right: 10px; + border-radius: 3px; + background-color: @bg; + color: @peach; } ''; }; diff --git a/persist.nix b/persist.nix index b242fd4..4ea4aff 100644 --- a/persist.nix +++ b/persist.nix @@ -1,18 +1,16 @@ -{ ... }: { +{ ... }: +{ # machine-id is used by systemd for the journal, if you don't # persist this file you won't be able to easily use journalctl to # look at journals for previous boots. environment.etc."machine-id".source = "/nix/persist/etc/machine-id"; - # if you want to run an openssh daemon, you may want to store the # host keys across reboots. # # For this to work you will need to create the directory yourself: # $ mkdir /nix/persist/etc/ssh - environment.etc."ssh/ssh_host_rsa_key".source = "/nix/persist/etc/ssh/ssh_host_rsa_key"; - environment.etc."ssh/ssh_host_rsa_key.pub".source = "/nix/persist/etc/ssh/ssh_host_rsa_key.pub"; - environment.etc."ssh/ssh_host_ed25519_key".source = "/nix/persist/etc/ssh/ssh_host_ed25519_key"; - environment.etc."ssh/ssh_host_ed25519_key.pub".source = "/nix/persist/etc/ssh/ssh_host_ed25519_key.pub"; + environment.etc."ssh/id_ed25519".source = "/nix/persist/etc/ssh/id_ed25519"; + environment.etc."ssh/id_ed25519.pub".source = "/nix/persist/etc/ssh/id_ed25519.pub"; }