My personal Nix flake
Find a file
cswimr 6ba73f78e6
All checks were successful
Actions / Build Flake Packages (push) Successful in 1m33s
add support for cockpit extensions
2025-11-05 08:49:22 -06:00
.forgejo/workflows update branch name 2025-11-03 12:44:36 -06:00
.vscode formatter setting changes 2025-11-03 12:38:15 -06:00
assets/img work on more forgejo stuff 2025-10-22 08:12:04 -05:00
config declaratively configure ytmdesktop 2025-10-06 12:24:44 -05:00
home-manager select vscord icons based on configured catppuccin flavor 2025-11-02 20:16:32 -06:00
hosts fix path regexes, add age key for the root user 2025-10-31 03:08:33 -05:00
nixos add support for cockpit extensions 2025-11-05 08:49:22 -06:00
nvim turn off relative line numbers in neovim 2025-10-31 02:48:38 -05:00
packages add support for cockpit extensions 2025-11-05 08:49:22 -06:00
scripts secrets cleanup; move unused secrets from nixos to home-manager 2025-10-31 00:24:50 -05:00
shared use the catppuccin flake 2025-10-29 23:35:35 -05:00
templates add stdenv.cc.cc.lib to packages in the devshell templates 2025-10-26 23:22:54 -05:00
.envrc flake refactoring 2025-06-11 12:39:25 -05:00
.gitignore early version of a forgejo service 2025-10-22 04:15:19 -05:00
.sops.yaml fix path regexes, add age key for the root user 2025-10-31 03:08:33 -05:00
flake.lock remove nixpkgs-python from the main flake 2025-10-31 03:13:50 -05:00
flake.nix add support for cockpit extensions 2025-11-05 08:49:22 -06:00
LICENSE add LICENSE file 2024-11-22 10:24:49 -05:00
pyproject.toml refactor sops secrets 2025-10-28 05:58:42 -05:00
README.md streamline tailscale authentication process 2025-10-29 06:15:05 -05:00
renovate.json5 formatter setting changes 2025-11-03 12:38:15 -06:00
secrets.sops.yaml fix path regexes, add age key for the root user 2025-10-31 03:08:33 -05:00
uv.lock Lock file maintenance (#60) 2025-11-02 18:02:33 -06:00

flake

Hi there! This repository contains my NixOS flake. This is mainly meant as a utility for my own use, but if you'd like to base your configs on mine for some reason, feel free!

Templates

These devshell templates come with direnv and nix-direnv support. Here is an example NixOS configuration to enable these tools.

{
  programs.direnv = {
    enable = true;
    nix-direnv.enable = true;
    direnvrcExtra =
      # setting the DIRENV_DISABLE environment variable will prevent direnv from running.
      # useful for scripts, so you don't have to wait for a flake to evaluate.
      ''
        ''${DIRENV_DISABLE:+exit}
      '';
  };
}

Simple

This template has all the batteries included to get you started with numtide's devshell. Use the following command to add it to your project:

nix flake init -t "git+https://c.csw.im/cswimr/flake#simple"

uv

This template offers a Python environment, sporting uv as the package manager and some example packages. It also automatically handles installing your dependencies, whether they're from a pyproject.toml file or from an older requirements.txt file. Use the following command to add it to your project:

nix flake init -t "git+https://c.csw.im/cswimr/flake#uv"

Avoiding Python Compilation

This template uses nixpkgs-python to retrieve Python builds. You can use Cachix to add their binary cache to your user configuration. This will avoid lengthy Python compilation times. You can use the following command to add the binary cache to your user's nix.conf file:

nix-shell -p cachix --run "cachix use nixpkgs-python"

Here's an example NixOS configuration that configures this binary cache system-wide:

{
    nix = {
        substituters = [
            "https://nixpkgs-python.cachix.org"
        ];
        trusted-public-keys = [
            "nixpkgs-python.cachix.org-1:hxjI7pFxTyuTHn2NkvWCrAUcNZLNS3ZAvfYNuYifcEU="
        ];
    };
};

Notes

  • This configuration offers zsh as the default shell. You can change this in shell.nix. This also includes a starship prompt.
  • This repository manages secrets using sops-nix.

Notable Applications

This list contains a bunch of applications and tools that I use a lot. Some of these will have configs declared in this repository, while others may not.

  • uv (Template): So, I develop most of my projects with Python. I used to use a lot of tools like Poetry, pipx, and virtualenv. I had also heard of others like PDM and pyenv. uv does what those tools do, but better. It's effortless to use, and is so incredibly fast. Like, it's actually insane just how fast this tool is, compared to Poetry.
  • ruff: Again, as a primarily Python developer, I used to use pylint a lot. Unfortunately I do still have to, but only because ruff doesn't yet have feature comparability to pylint. However, it is blazingly fast, just like its brother uv. A codebase that takes plint about ~55 seconds to lint, takes ruff less than a second. It is kind of insane how fast this linter is, sometimes I don't know if it's working or not in my IDE just because it updates so fast.
  • neovim (Module): A Vim-based text editor that I'm actually using to write this list!
  • VSCodium (Module): While neovim can be used as a full-fledged development environment, I personally prefer the ease of use of VSCodium when I'm working on larger projects.
  • bottom (Module): Ever used htop? This is that, but better!
  • Vesktop (Module): As everyone knows, the official Discord Linux client is... subpar, at best, and has features that just don't work on modern compositors like Wayland, such as screen sharing. Vesktop fixes a lot of those issues, and also comes with the awesome client modification Vencord built-in.
  • Sober: Ever since Byfron's Hyperion was added to the ROBLOX client, playing ROBLOX on Linux has been impossible without using an Android emulator. Well, Sober aims to fix this. It does still use the official ROBLOX Android apk, but it is a full port to Linux, as opposed to an emulator. I can personally confirm the performance claims they advertise on their website, it does massively increase performance over the Windows version of ROBLOX.