Files
tuxmate-abusoww/src/lib/scripts/nix.ts

24 lines
891 B
TypeScript

import { type PackageInfo } from './shared';
import { isUnfreePackage } from '../nixUnfree';
export function generateNixConfig(packages: PackageInfo[]): string {
const validPackages = packages.filter(p => p.pkg.trim());
if (validPackages.length === 0) return '# No packages selected';
const date = new Date().toISOString().split('T')[0];
const sortedPkgs = validPackages.map(p => p.pkg.trim()).sort();
const packageList = sortedPkgs.map(pkg => ` ${pkg}`).join('\n');
const unfreePkgs = sortedPkgs.filter(pkg => isUnfreePackage(pkg));
const unfreeComment = unfreePkgs.length > 0
? `# Unfree: ${unfreePkgs.join(', ')}\n# Requires: nixpkgs.config.allowUnfree = true;\n\n`
: '';
return `# Generated by tuxmate — ${date}
# https://github.com/abusoww/tuxmate
${unfreeComment}environment.systemPackages = with pkgs; [
${packageList}
];`;
}