My configurations for the software I use
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initial Nix config

yemou c276ba7f f2d826e2

+1075
+10
common/development/default.nix
··· 1 + { ... }: 2 + { 3 + imports = [ 4 + ./python.nix 5 + ./sh.nix 6 + ./typst.nix 7 + ./zig.nix 8 + ]; 9 + } 10 +
+9
common/development/python.nix
··· 1 + { pkgs, ... }: 2 + { 3 + users.users.mou.packages = (with pkgs; [ 4 + ruff 5 + ]) ++ 6 + (with pkgs.python3Packages; [ 7 + ruff-lsp 8 + ]); 9 + }
+6
common/development/sh.nix
··· 1 + { pkgs, ... }: 2 + { 3 + users.users.mou.packages = with pkgs; [ 4 + shellcheck 5 + ]; 6 + }
+9
common/development/typst.nix
··· 1 + { pkgs, ... }: 2 + { 3 + users.users.mou.packages = with pkgs; [ 4 + typst 5 + typstfmt 6 + typst-live 7 + typst-lsp 8 + ]; 9 + }
+6
common/development/zig.nix
··· 1 + { pkgs, ... }: 2 + { 3 + users.users.mou.packages = with pkgs; [ 4 + zls 5 + ]; 6 + }
+14
common/editor.nix
··· 1 + { pkgs, ... }: 2 + { 3 + environment = { 4 + sessionVariables = { 5 + EDITOR = "kak"; 6 + VISUAL = "kak"; 7 + }; 8 + 9 + systemPackages = with pkgs; [ 10 + kakoune 11 + file 12 + ]; 13 + }; 14 + }
+36
common/scripts/bemenu.nix
··· 1 + { pkgs, ... }: 2 + let 3 + wrapped-bemenu = pkgs.writeScriptBin "bemenu" ( 4 + builtins.replaceStrings 5 + [ 6 + "#!/bin/sh" 7 + "/usr/bin/bemenu" 8 + ] 9 + [ 10 + "#!${pkgs.bash}/bin/sh" 11 + "${pkgs.bemenu}/bin/bemenu" 12 + ] 13 + (builtins.readFile ../../data/shellscripts/bemenu) 14 + ); 15 + 16 + wrapped-bemenu-run = pkgs.writeScriptBin "bemenu-run" ( 17 + builtins.replaceStrings 18 + [ 19 + "#!/bin/sh" 20 + "/usr/bin/bemenu-run" 21 + ] 22 + [ 23 + "#!${pkgs.bash}/bin/sh" 24 + "${pkgs.bemenu}/bin/bemenu-run" 25 + ] 26 + (builtins.readFile ../../data/shellscripts/bemenu-run) 27 + ); 28 + in 29 + pkgs.symlinkJoin { 30 + name = "bemenu"; 31 + paths = [ 32 + wrapped-bemenu 33 + wrapped-bemenu-run 34 + pkgs.bemenu 35 + ]; 36 + }
+6
common/scripts/default.nix
··· 1 + { pkgs, ... }: 2 + { 3 + users.users.mou.packages = with pkgs; [ 4 + (callPackage ./bemenu.nix { }) 5 + ]; 6 + }
+200
flake.lock
··· 1 + { 2 + "nodes": { 3 + "esquid": { 4 + "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ] 8 + }, 9 + "locked": { 10 + "lastModified": 1682903408, 11 + "narHash": "sha256-W+CTNeqTFwTgEfFZbIFH56zPlveLmoDhSrIUW0kpKTM=", 12 + "owner": "Things-N-Stuff", 13 + "repo": "eSquid", 14 + "rev": "4499666171c68dae7541a5ba8c1c79235052d1b5", 15 + "type": "github" 16 + }, 17 + "original": { 18 + "owner": "Things-N-Stuff", 19 + "repo": "eSquid", 20 + "type": "github" 21 + } 22 + }, 23 + "flake-compat": { 24 + "flake": false, 25 + "locked": { 26 + "lastModified": 1673956053, 27 + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", 28 + "owner": "edolstra", 29 + "repo": "flake-compat", 30 + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", 31 + "type": "github" 32 + }, 33 + "original": { 34 + "owner": "edolstra", 35 + "repo": "flake-compat", 36 + "type": "github" 37 + } 38 + }, 39 + "flake-utils": { 40 + "inputs": { 41 + "systems": "systems" 42 + }, 43 + "locked": { 44 + "lastModified": 1681202837, 45 + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 46 + "owner": "numtide", 47 + "repo": "flake-utils", 48 + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 49 + "type": "github" 50 + }, 51 + "original": { 52 + "owner": "numtide", 53 + "repo": "flake-utils", 54 + "type": "github" 55 + } 56 + }, 57 + "home-manager": { 58 + "inputs": { 59 + "nixpkgs": [ 60 + "nixpkgs" 61 + ] 62 + }, 63 + "locked": { 64 + "lastModified": 1708031129, 65 + "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=", 66 + "owner": "nix-community", 67 + "repo": "home-manager", 68 + "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8", 69 + "type": "github" 70 + }, 71 + "original": { 72 + "owner": "nix-community", 73 + "repo": "home-manager", 74 + "type": "github" 75 + } 76 + }, 77 + "nix-minecraft": { 78 + "inputs": { 79 + "flake-compat": "flake-compat", 80 + "flake-utils": "flake-utils", 81 + "nixpkgs": [ 82 + "nixpkgs" 83 + ] 84 + }, 85 + "locked": { 86 + "lastModified": 1708132460, 87 + "narHash": "sha256-qINWCY4dq6Hzvxd3QY5OTKhE4FPsNSoas5thNwpttk4=", 88 + "owner": "Infinidoge", 89 + "repo": "nix-minecraft", 90 + "rev": "e8109d2e605a376109d5329c428c8d2d933470f1", 91 + "type": "github" 92 + }, 93 + "original": { 94 + "owner": "Infinidoge", 95 + "repo": "nix-minecraft", 96 + "type": "github" 97 + } 98 + }, 99 + "nixpkgs": { 100 + "locked": { 101 + "lastModified": 1708118438, 102 + "narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", 103 + "owner": "NixOS", 104 + "repo": "nixpkgs", 105 + "rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", 106 + "type": "github" 107 + }, 108 + "original": { 109 + "owner": "NixOS", 110 + "ref": "nixos-unstable", 111 + "repo": "nixpkgs", 112 + "type": "github" 113 + } 114 + }, 115 + "nixpkgs-stable": { 116 + "locked": { 117 + "lastModified": 1707603439, 118 + "narHash": "sha256-LodBVZ3+ehJP2azM5oj+JrhfNAAzmTJ/OwAIOn0RfZ0=", 119 + "owner": "NixOS", 120 + "repo": "nixpkgs", 121 + "rev": "d8cd80616c8800feec0cab64331d7c3d5a1a6d98", 122 + "type": "github" 123 + }, 124 + "original": { 125 + "owner": "NixOS", 126 + "ref": "release-23.11", 127 + "repo": "nixpkgs", 128 + "type": "github" 129 + } 130 + }, 131 + "root": { 132 + "inputs": { 133 + "esquid": "esquid", 134 + "home-manager": "home-manager", 135 + "nix-minecraft": "nix-minecraft", 136 + "nixpkgs": "nixpkgs", 137 + "sops-nix": "sops-nix", 138 + "yemou-scripts": "yemou-scripts" 139 + } 140 + }, 141 + "sops-nix": { 142 + "inputs": { 143 + "nixpkgs": [ 144 + "nixpkgs" 145 + ], 146 + "nixpkgs-stable": "nixpkgs-stable" 147 + }, 148 + "locked": { 149 + "lastModified": 1707842202, 150 + "narHash": "sha256-3dTBbCzHJBinwhsisGJHW1HLBsLbj91+a5ZDXt7ttW0=", 151 + "owner": "Mic92", 152 + "repo": "sops-nix", 153 + "rev": "48afd3264ec52bee85231a7122612e2c5202fa74", 154 + "type": "github" 155 + }, 156 + "original": { 157 + "owner": "Mic92", 158 + "repo": "sops-nix", 159 + "type": "github" 160 + } 161 + }, 162 + "systems": { 163 + "locked": { 164 + "lastModified": 1681028828, 165 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 166 + "owner": "nix-systems", 167 + "repo": "default", 168 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 169 + "type": "github" 170 + }, 171 + "original": { 172 + "owner": "nix-systems", 173 + "repo": "default", 174 + "type": "github" 175 + } 176 + }, 177 + "yemou-scripts": { 178 + "inputs": { 179 + "nixpkgs": [ 180 + "nixpkgs" 181 + ] 182 + }, 183 + "locked": { 184 + "lastModified": 1705635077, 185 + "narHash": "sha256-itxXV1qG8plLbiW6beGabzuKUMf7DzOObLAT5miRUOs=", 186 + "owner": "yemou", 187 + "repo": "scripts", 188 + "rev": "b5bcc101b1ea4b1d9544d14e45a00507e19b9a78", 189 + "type": "gitlab" 190 + }, 191 + "original": { 192 + "owner": "yemou", 193 + "repo": "scripts", 194 + "type": "gitlab" 195 + } 196 + } 197 + }, 198 + "root": "root", 199 + "version": 7 200 + }
+62
flake.nix
··· 1 + { 2 + inputs = { 3 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 4 + home-manager = { 5 + url = "github:nix-community/home-manager"; 6 + inputs.nixpkgs.follows = "nixpkgs"; 7 + }; 8 + sops-nix = { 9 + url = "github:Mic92/sops-nix"; 10 + inputs.nixpkgs.follows = "nixpkgs"; 11 + }; 12 + yemou-scripts = { 13 + url = "gitlab:yemou/scripts"; 14 + # url = "path:/home/mou/misc/repos/scripts"; 15 + inputs.nixpkgs.follows = "nixpkgs"; 16 + }; 17 + esquid = { 18 + url = "github:Things-N-Stuff/eSquid"; 19 + # url = "path:/home/mou/misc/repos/eSquid"; 20 + inputs.nixpkgs.follows = "nixpkgs"; 21 + }; 22 + nix-minecraft = { 23 + url = "github:Infinidoge/nix-minecraft"; 24 + inputs.nixpkgs.follows = "nixpkgs"; 25 + }; 26 + }; 27 + 28 + outputs = { self, nixpkgs, sops-nix, home-manager, ... }@attrs: { 29 + nixosConfigurations = { 30 + # lily = nixpkgs.lib.nixosSystem { 31 + # system = "x86_64-linux"; 32 + # specialArgs = attrs; 33 + # modules = [ 34 + # ./lily/config.nix 35 + # home-manager.nixosModules.home-manager 36 + # { 37 + # home-manager.extraSpecialArgs = attrs; 38 + # home-manager.useGlobalPkgs = true; 39 + # home-manager.useUserPackages = true; 40 + # home-manager.users.mou = import ./lily/home.nix; 41 + # } 42 + # ]; 43 + # }; 44 + 45 + lutea = nixpkgs.lib.nixosSystem { 46 + system = "x86_64-linux"; 47 + specialArgs = attrs; 48 + modules = [ 49 + ./lutea/config.nix 50 + sops-nix.nixosModules.sops 51 + home-manager.nixosModules.home-manager 52 + { 53 + home-manager.extraSpecialArgs = attrs; 54 + home-manager.useGlobalPkgs = true; 55 + home-manager.useUserPackages = true; 56 + home-manager.users.mou = import ./lutea/home.nix; 57 + } 58 + ]; 59 + }; 60 + }; 61 + }; 62 + }
+85
lily/config.nix
··· 1 + { config, pkgs, ... }: 2 + { 3 + imports = [ 4 + ./hardware.nix 5 + ./packages.nix 6 + # There are secrets here I haven't put into sops yet 7 + # ./services/esquid.nix 8 + # ./services/starbound.nix 9 + ./services/openssh.nix 10 + ]; 11 + 12 + sops = { 13 + defaultSopsFile = ../secrets/lily.yaml; 14 + defaultSopsFormat = "yaml"; 15 + age.keyFile = "/home/mou/.config/sops/age/keys.txt"; 16 + secrets = { 17 + "passwordHashes/root".neededForUsers = true; 18 + "passwordHashes/mou".neededForUsers = true; 19 + }; 20 + }; 21 + 22 + networking.hostName = "lily"; 23 + time.timeZone = "America/New_York"; 24 + 25 + services = { 26 + acpid.enable = true; 27 + fail2ban.enable = true; 28 + fwupd.enable = true; 29 + smartd.enable = true; 30 + thermald.enable = true; 31 + }; 32 + 33 + environment = { 34 + sessionVariables = { 35 + XDG_CACHE_HOME = "$HOME/.cache"; 36 + XDG_CONFIG_HOME = "$HOME/.config"; 37 + XDG_DATA_HOME = "$HOME/.local/share"; 38 + XDG_STATE_HOME = "$HOME/.local/state"; 39 + }; 40 + loginShellInit = '' 41 + if [ -e /etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh ] 42 + then 43 + . /etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh 44 + fi 45 + ''; 46 + }; 47 + 48 + users = { 49 + groups.mou = { 50 + gid = 1000; 51 + }; 52 + users = { 53 + root.hashedPasswordFile = config.sops.secrets."passwordHashes/root".path; 54 + mou = { 55 + isNormalUser = true; 56 + group = "mou"; 57 + extraGroups = [ "users" "wheel" ]; 58 + shell = pkgs.loksh; 59 + hashedPasswordFile = config.sops.secrets."passwordHashes/mou".path; 60 + }; 61 + }; 62 + }; 63 + 64 + nix = { 65 + optimise.automatic = true; 66 + gc.automatic = true; 67 + settings = { 68 + use-xdg-base-directories = true; 69 + auto-optimise-store = true; 70 + experimental-features = [ "nix-command" "flakes" ]; 71 + }; 72 + }; 73 + 74 + # This option defines the first version of NixOS you have installed on this particular machine, 75 + # and is used to maintain compatibility with application data (e.g. databases) created on older 76 + # NixOS versions. Most users should NEVER change this value after the initial install, for any 77 + # reason, even if you've upgraded your system to a new NixOS release. This value does NOT affect 78 + # the Nixpkgs version your packages and OS are pulled from, so changing it will NOT upgrade your 79 + # system. This value being lower than the current NixOS release does NOT mean your system is out 80 + # of date, out of support, or vulnerable. Do NOT change this value unless you have manually 81 + # inspected all the changes it would make to your configuration, and migrated your data 82 + # accordingly. For more information, see `man configuration.nix` or 83 + # https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . 84 + system.stateVersion = "24.05"; # Did you read the comment? 85 + }
+49
lily/hardware.nix
··· 1 + { lib, modulesPath, ... }: 2 + 3 + { 4 + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 5 + 6 + boot = { 7 + initrd = { 8 + availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; 9 + kernelModules = [ ]; 10 + }; 11 + kernelModules = [ "kvm-intel" ]; 12 + loader = { 13 + efi.canTouchEfiVariables = true; 14 + systemd-boot = { 15 + consoleMode = "auto"; 16 + editor = false; 17 + enable = true; 18 + }; 19 + timeout = 0; 20 + }; 21 + tmp.useTmpfs = true; 22 + }; 23 + 24 + fileSystems = { 25 + "/" = { 26 + device = "UUID=e0b979fb-2c29-4e0b-910f-c89e4959c9a0"; 27 + fsType = "bcachefs"; 28 + }; 29 + "/boot" = { 30 + device = "/dev/disk/by-uuid/862D-85DB"; 31 + fsType = "vfat"; 32 + options = [ "fmask=0077" "dmask=0077" "defaults" ]; 33 + }; 34 + }; 35 + 36 + hardware = { 37 + enableRedistributableFirmware = true; 38 + bluetooth = { 39 + enable = true; 40 + powerOnBoot = true; 41 + }; 42 + cpu.intel.updateMicrocode = true; 43 + uinput.enable = true; 44 + }; 45 + 46 + swapDevices = [ ]; 47 + networking.useDHCP = lib.mkDefault true; 48 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 49 + }
+52
lily/home.nix
··· 1 + { config, ... }: 2 + { 3 + home.username = "mou"; 4 + home.homeDirectory = "/home/${config.home.username}"; 5 + 6 + xdg = { 7 + enable = true; 8 + cacheHome = "${config.home.homeDirectory}/.cache"; 9 + configHome = "${config.home.homeDirectory}/.config"; 10 + dataHome = "${config.home.homeDirectory}/.local/share"; 11 + stateHome = "${config.home.homeDirectory}/.local/state"; 12 + 13 + configFile = { 14 + "kak" = { 15 + source = config.lib.file.mkOutOfStoreSymlink 16 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/kak"; 17 + recursive = true; 18 + }; 19 + "kak-lsp" = { 20 + source = config.lib.file.mkOutOfStoreSymlink 21 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/kak-lsp"; 22 + }; 23 + "loksh" = { 24 + source = config.lib.file.mkOutOfStoreSymlink 25 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/loksh"; 26 + }; 27 + "thm" = { 28 + source = config.lib.file.mkOutOfStoreSymlink 29 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/thm"; 30 + }; 31 + }; 32 + }; 33 + 34 + # This doesn't prepend the path, it appends it 35 + # home.sessionPath = [ "${config.home.homeDirectory}/misc/exes" ]; 36 + home.sessionVariables = { 37 + ENV = "${config.xdg.configHome}/loksh/rc"; 38 + HISTCONTROL = "ignoredups:ignorespace"; 39 + HISTFILE = "${config.xdg.cacheHome}/loksh_history"; 40 + PATH = "${config.home.homeDirectory}/misc/exes:$PATH"; 41 + }; 42 + 43 + programs = { 44 + git = { 45 + enable = true; 46 + userEmail = "yemou@butwho.xyz"; 47 + userName = "yemou"; 48 + }; 49 + }; 50 + 51 + home.stateVersion = "24.05"; 52 + }
+23
lily/packages.nix
··· 1 + { pkgs, yemou-scripts, ... }: 2 + { 3 + # nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ ]; 4 + # nixpkgs.config.permittedInsecurePackages = [ ]; 5 + 6 + nixpkgs.overlays = [ yemou-scripts.overlays.default ]; 7 + 8 + environment.systemPackages = with pkgs; [ 9 + git 10 + htop 11 + man-pages 12 + man-pages-posix 13 + ]; 14 + 15 + users.users.mou.packages = with pkgs; [ 16 + abduco 17 + kak-lsp 18 + magic-wormhole 19 + nil 20 + nixpkgs-fmt 21 + yemou-scripts.packages."x86_64-linux".thm 22 + ]; 23 + }
+14
lily/services/openssh.nix
··· 1 + { ... }: 2 + { 3 + services.openssh = { 4 + enable = true; 5 + ports = [ 36823 ]; 6 + settings = { 7 + PasswordAuthentication = false; 8 + PermitRootLogin = "no"; 9 + }; 10 + }; 11 + 12 + users.users.mou.openssh.authorizedKeys.keys = 13 + [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKnyBRVRLKrlsAlMFXimvcF/mBjmSfixdzUX4yCZsYvE" ]; 14 + }
+173
lutea/config.nix
··· 1 + { config, lib, pkgs, ... }: { 2 + imports = [ 3 + ./hardware.nix 4 + ./packages.nix 5 + ]; 6 + 7 + sops = { 8 + defaultSopsFile = ../secrets/lutea.yaml; 9 + defaultSopsFormat = "yaml"; 10 + age.keyFile = "/home/mou/.app/config/sops/age/keys.txt"; 11 + secrets = { 12 + "passwordHashes/root".neededForUsers = true; 13 + "passwordHashes/mou".neededForUsers = true; 14 + }; 15 + }; 16 + 17 + networking.hostName = "lutea"; 18 + time.timeZone = "America/New_York"; 19 + 20 + virtualisation.libvirtd.enable = true; 21 + 22 + # Move to home-manager? 23 + qt = { 24 + enable = true; 25 + platformTheme = "gnome"; 26 + style = "adwaita"; 27 + }; 28 + 29 + fonts = { 30 + enableDefaultPackages = true; 31 + packages = with pkgs; [ 32 + corefonts 33 + ibm-plex 34 + ]; 35 + fontconfig.defaultFonts = { 36 + serif = [ "IBM Plex Serif" ]; 37 + sansSerif = [ "IBM Plex Sans" ]; 38 + monospace = [ "IBM Plex Mono" ]; 39 + }; 40 + }; 41 + 42 + security = { 43 + polkit.enable = true; 44 + rtkit.enable = true; 45 + pam.services.swaylock = { }; # Needed for swaylock to work 46 + }; 47 + 48 + services = { 49 + acpid.enable = true; 50 + dbus.enable = true; 51 + flatpak.enable = true; 52 + fwupd.enable = true; 53 + greetd = { 54 + enable = true; 55 + settings = { 56 + default_session = { 57 + # TODO: When the next release occurs (currently on 0.8.0), the `-x` option will be available 58 + # NOTE: A future release may check these directories automatically instead of requiring 59 + # me to set them explicitly 60 + command = '' 61 + ${pkgs.greetd.tuigreet}/bin/tuigreet \ 62 + -s /run/current-system/sw/share/wayland-sessions:/run/current-system/sw/share/xsessions \ 63 + -t --time-format '%F %A %R' \ 64 + -r --remember-user-session \ 65 + --power-shutdown 'systemctl poweroff' \ 66 + --power-reboot 'systemctl reboot' 67 + ''; 68 + }; 69 + }; 70 + }; 71 + pipewire = { 72 + enable = true; 73 + alsa.enable = true; 74 + jack.enable = true; 75 + pulse.enable = true; 76 + }; 77 + printing.enable = true; 78 + ratbagd.enable = true; 79 + smartd.enable = true; 80 + thermald.enable = true; 81 + udev.packages = with pkgs; [ game-devices-udev-rules ]; 82 + xserver = { 83 + desktopManager = { 84 + # plasma5 = { 85 + # enable = true; 86 + # # useQtScaling = true; # I'm not sure what this does. 87 + # }; 88 + }; 89 + wacom.enable = true; 90 + }; 91 + }; 92 + 93 + 94 + xdg = { 95 + mime.enable = true; 96 + icons.enable = true; 97 + portal = { 98 + enable = true; 99 + wlr.enable = true; 100 + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; 101 + }; 102 + }; 103 + 104 + # These are set in two places at the moment, once here and once with home-manager. 105 + # If the following issue is dealt with, I could get rid of the home-manager ones. 106 + environment = { 107 + loginShellInit = '' 108 + if [ -e "/etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh" ] 109 + then 110 + . "/etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh" 111 + fi 112 + ''; 113 + pathsToLink = [ 114 + "/share/xsessions" 115 + "/share/wayland-sessions" 116 + ]; 117 + # plasma5.excludePackages = with pkgs.plasma5Packages; [ 118 + # konsole 119 + # oxygen 120 + # pkgs.aha 121 + # plasma-browser-integration 122 + # qtvirtualkeyboard 123 + # plasma-workspace-wallpapers 124 + # ]; 125 + sessionVariables = { 126 + XDG_CACHE_HOME = "$HOME/.app/cache"; 127 + XDG_CONFIG_HOME = "$HOME/.app/config"; 128 + XDG_DATA_HOME = "$HOME/.app/data"; 129 + XDG_STATE_HOME = "$HOME/.app/state"; 130 + }; 131 + }; 132 + 133 + users = { 134 + groups.mou.gid = 1000; 135 + users = { 136 + root.hashedPasswordFile = config.sops.secrets."passwordHashes/root".path; 137 + mou = { 138 + isNormalUser = true; 139 + group = "mou"; 140 + extraGroups = [ 141 + "gamemode" 142 + "libvirtd" 143 + "users" 144 + "wheel" 145 + ]; 146 + shell = pkgs.loksh; 147 + hashedPasswordFile = config.sops.secrets."passwordHashes/mou".path; 148 + }; 149 + }; 150 + }; 151 + 152 + nix = { 153 + optimise.automatic = true; 154 + gc.automatic = true; 155 + settings = { 156 + auto-optimise-store = true; 157 + experimental-features = [ "nix-command" "flakes" ]; 158 + use-xdg-base-directories = true; 159 + }; 160 + }; 161 + 162 + # This option defines the first version of NixOS you have installed on this particular machine, 163 + # and is used to maintain compatibility with application data (e.g. databases) created on older 164 + # NixOS versions. Most users should NEVER change this value after the initial install, for any 165 + # reason, even if you've upgraded your system to a new NixOS release. This value does NOT affect 166 + # the Nixpkgs version your packages and OS are pulled from, so changing it will NOT upgrade your 167 + # system. This value being lower than the current NixOS release does NOT mean your system is out 168 + # of date, out of support, or vulnerable. Do NOT change this value unless you have manually 169 + # inspected all the changes it would make to your configuration, and migrated your data 170 + # accordingly. For more information, see `man configuration.nix` or 171 + # https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . 172 + system.stateVersion = "24.05"; # Did you read the comment? 173 + }
+95
lutea/hardware.nix
··· 1 + { lib, pkgs, modulesPath, ... }: 2 + 3 + { 4 + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 5 + 6 + boot = { 7 + initrd = { 8 + availableKernelModules = [ 9 + "xhci_pci" 10 + "ahci" 11 + "nvme" 12 + "usbhid" 13 + "usb_storage" 14 + "sd_mod" 15 + ]; 16 + kernelModules = [ ]; 17 + }; 18 + kernel.sysctl = { 19 + "vm.max_map_count" = 2147483642; 20 + }; 21 + kernelModules = [ "kvm-intel" ]; 22 + kernelPackages = pkgs.linuxPackages_latest; 23 + loader = { 24 + efi.canTouchEfiVariables = true; 25 + systemd-boot = { 26 + consoleMode = "auto"; 27 + editor = false; 28 + enable = true; 29 + }; 30 + timeout = 0; 31 + }; 32 + supportedFilesystems = [ "ntfs" ]; 33 + tmp.useTmpfs = true; 34 + }; 35 + 36 + fileSystems = { 37 + "/" = { 38 + device = "UUID=e0b979fb-2c29-4e0b-910f-c89e4959c9a0"; 39 + fsType = "bcachefs"; 40 + }; 41 + "/boot" = { 42 + device = "/dev/disk/by-uuid/862D-85DB"; 43 + fsType = "vfat"; 44 + options = [ "fmask=0077" "dmask=0077" "defaults" ]; 45 + }; 46 + 47 + # # Impermanence 48 + # "/" = { 49 + # device = "none"; 50 + # fsType = "tmpfs"; 51 + # options = [ "mode=755" ]; 52 + # }; 53 + # "/boot" = { 54 + # device = "/dev/disk/by-uuid/862D-85DB"; 55 + # fsType = "vfat"; 56 + # options = [ "defaults" "fmask=0077" "dmask=0077" ]; 57 + # }; 58 + #"/nix" = { 59 + # device = "UUID=e0b979fb-2c29-4e0b-910f-c89e4959c9a0"; 60 + # fsType = "bcachefs"; 61 + # options = [ "defaults" "X-mount.subdir=nix-store" ]; 62 + #}; 63 + #"/home-mou" = { 64 + # device = "UUID=e0b979fb-2c29-4e0b-910f-c89e4959c9a0"; 65 + # fsType = "bcachefs"; 66 + # options = [ "defaults" "X-mount.subdir=home-mou" ]; 67 + # neededForBoot = true; # This has the decryption key 68 + #}; 69 + #"/home/mou" = { 70 + # device = "none"; 71 + # fsType = "tmpfs"; 72 + # options = [ "mode=750" "gid=1000" "uid=1000" ]; 73 + #}; 74 + }; 75 + 76 + hardware = { 77 + enableRedistributableFirmware = true; 78 + bluetooth = { 79 + enable = true; 80 + powerOnBoot = true; 81 + }; 82 + cpu.intel.updateMicrocode = true; 83 + uinput.enable = true; 84 + opengl = { 85 + enable = true; 86 + driSupport = true; 87 + driSupport32Bit = true; 88 + extraPackages = with pkgs; [ intel-media-driver ]; 89 + }; 90 + }; 91 + 92 + powerManagement.cpuFreqGovernor = "performance"; 93 + networking.useDHCP = lib.mkDefault true; 94 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 95 + }
+112
lutea/home.nix
··· 1 + { config, lib, ... }: 2 + { 3 + home.username = "mou"; 4 + home.homeDirectory = "/home/${config.home.username}"; 5 + 6 + xdg = { 7 + enable = true; 8 + cacheHome = "${config.home.homeDirectory}/.app/cache"; 9 + configHome = "${config.home.homeDirectory}/.app/config"; 10 + dataHome = "${config.home.homeDirectory}/.app/data"; 11 + stateHome = "${config.home.homeDirectory}/.app/state"; 12 + userDirs = { 13 + enable = true; 14 + desktop = "${config.home.homeDirectory}/misc/.desktop"; 15 + documents = "${config.home.homeDirectory}/docs"; 16 + download = "${config.home.homeDirectory}/dls"; 17 + music = "${config.home.homeDirectory}/aud"; 18 + pictures = "${config.home.homeDirectory}/pics"; 19 + publicShare = "${config.home.homeDirectory}/misc/.public"; 20 + templates = "${config.home.homeDirectory}/misc/.templates"; 21 + videos = "${config.home.homeDirectory}/vids"; 22 + }; 23 + configFile = { 24 + "autostart" = { 25 + source = config.lib.file.mkOutOfStoreSymlink 26 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/autostart"; 27 + }; 28 + "foot" = { 29 + source = config.lib.file.mkOutOfStoreSymlink 30 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/foot"; 31 + }; 32 + "gtk-3.0" = { 33 + source = config.lib.file.mkOutOfStoreSymlink 34 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/gtk-3.0"; 35 + }; 36 + "kak" = { 37 + source = config.lib.file.mkOutOfStoreSymlink 38 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/kak"; 39 + recursive = true; 40 + }; 41 + "kak-lsp" = { 42 + source = config.lib.file.mkOutOfStoreSymlink 43 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/kak-lsp"; 44 + }; 45 + "kanshi" = { 46 + source = config.lib.file.mkOutOfStoreSymlink 47 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/kanshi"; 48 + }; 49 + "loksh" = { 50 + source = config.lib.file.mkOutOfStoreSymlink 51 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/loksh"; 52 + }; 53 + "mpv" = { 54 + source = config.lib.file.mkOutOfStoreSymlink 55 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/mpv"; 56 + }; 57 + "sway" = { 58 + source = config.lib.file.mkOutOfStoreSymlink 59 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/sway"; 60 + }; 61 + "scr" = { 62 + source = config.lib.file.mkOutOfStoreSymlink 63 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/scr"; 64 + }; 65 + "thm" = { 66 + source = config.lib.file.mkOutOfStoreSymlink 67 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/thm"; 68 + }; 69 + "waybar" = { 70 + source = config.lib.file.mkOutOfStoreSymlink 71 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/waybar"; 72 + }; 73 + "wayfire.ini" = { 74 + source = config.lib.file.mkOutOfStoreSymlink 75 + "${config.home.homeDirectory}/misc/repos/setup/data/configs/wayfire.ini"; 76 + }; 77 + }; 78 + }; 79 + 80 + fonts.fontconfig.enable = true; 81 + # gtk = { 82 + # enable = true; 83 + # }; 84 + 85 + # home.pointerCursor = { 86 + # package = pkgs.vanilla-dmz; 87 + # name = "Vanilla-DMZ"; 88 + # gtk.enable = true; 89 + # }; 90 + 91 + # Fix shell scripts to use full paths and then replace this 92 + # Bring it back once we get a sessionPrependPath or something similar 93 + # home.sessionPath = [ "${config.home.homeDirectory}/misc/exes" ]; 94 + home.sessionVariables = { 95 + ENV = "${config.xdg.configHome}/loksh/rc"; 96 + HISTCONTROL = "ignoredups:ignorespace"; 97 + HISTFILE = "${config.xdg.cacheHome}/loksh_history"; 98 + PATH = "${config.home.homeDirectory}/misc/exes:$PATH"; 99 + SLURP_ARGS = "-b 00000040 -w 0"; 100 + XDG_DATA_DIRS = "${config.home.homeDirectory}/.app/data/flatpak/exports/share:$XDG_DATA_DIRS"; 101 + }; 102 + 103 + programs = { 104 + git = { 105 + enable = true; 106 + userEmail = "yemou@butwho.xyz"; 107 + userName = "yemou"; 108 + }; 109 + }; 110 + 111 + home.stateVersion = "24.05"; 112 + }
+114
lutea/packages.nix
··· 1 + { lib, pkgs, yemou-scripts, ... }: 2 + { 3 + # nixpkgs.config.allowUnfree = true; 4 + nixpkgs.config.allowUnfreePredicate = pkg: 5 + builtins.elem (lib.getName pkg) [ 6 + "steam" # The steam flatpak doesn't work for my current setup (~/.var as a symlink) 7 + "steam-original" 8 + "steam-run" 9 + "corefonts" 10 + ]; 11 + 12 + # nixpkgs.config.permittedInsecurePackages = [ ]; 13 + 14 + imports = [ 15 + ../common/development 16 + ../common/editor.nix 17 + ../common/scripts 18 + ]; 19 + nixpkgs.overlays = [ yemou-scripts.overlays.default ]; 20 + 21 + # system.replaceRuntimeDependencies = [ 22 + # ({ 23 + # original = pkgs.mesa; 24 + # replacement = nixpkgs-staging.legacyPackages.x86_64-linux.mesa; 25 + # }) 26 + # ]; 27 + 28 + # System Packages 29 + environment.systemPackages = with pkgs; [ 30 + git 31 + htop 32 + man-pages 33 + man-pages-posix 34 + ]; 35 + 36 + # User Packages 37 + users.users.mou.packages = 38 + let 39 + # Upstream this 40 + ffmpegthumbnailerFixed = pkgs.ffmpegthumbnailer.overrideAttrs (finalAttrs: previousAttrs: { 41 + postPatch = previousAttrs.postPatch + '' 42 + substituteInPlace ./dist/ffmpegthumbnailer.thumbnailer \ 43 + --replace ffmpegthumbnailer $out/bin/ffmpegthumbnailer 44 + ''; 45 + }); 46 + in 47 + with pkgs; [ 48 + age 49 + blender 50 + chromium 51 + clang-tools 52 + dex 53 + ffmpegthumbnailerFixed 54 + foot 55 + gnome.adwaita-icon-theme 56 + gnome.nautilus 57 + godot_4 58 + inkscape 59 + intel-gpu-tools 60 + kak-lsp 61 + kanshi 62 + libnotify 63 + lmms 64 + lsof 65 + magic-wormhole 66 + mako 67 + mpv 68 + nethogs 69 + nil 70 + nixpkgs-fmt 71 + openssh 72 + pavucontrol # Are there pipewire specific tools for this? 73 + piper 74 + playerctl 75 + pulseaudio # Are there pipewire specific tools for this? 76 + rnnoise 77 + rpcs3 78 + shellcheck 79 + sops 80 + superTuxKart 81 + swayidle 82 + swaylock 83 + syncthing 84 + wl-clipboard 85 + wlsunset 86 + xdg-user-dirs 87 + yemou-scripts.packages."x86_64-linux".default 88 + ]; 89 + 90 + programs = { 91 + dconf.enable = true; # Move to home-manager? 92 + firefox.enable = true; # Move to home-manager? 93 + gamemode.enable = true; 94 + gamescope = { 95 + enable = true; 96 + capSysNice = true; 97 + }; 98 + steam.enable = true; 99 + sway = { 100 + enable = true; 101 + extraPackages = lib.mkForce [ ]; 102 + }; 103 + virt-manager.enable = true; 104 + wayfire = { 105 + enable = true; 106 + package = pkgs.wayfire-with-plugins; 107 + plugins = with pkgs.wayfirePlugins; [ 108 + wayfire-plugins-extra 109 + windecor 110 + ]; 111 + }; 112 + xwayland.enable = true; 113 + }; 114 + }